none
请教一个DefineProperty的问题 RRS feed

  • 问题

  • 看了下面这篇(http://msdn.microsoft.com/zh-cn/library/system.reflection.emit.propertybuilder(v=vs.95).aspx)MSND后,大致知道,如何通过

    DefineProperty类,动态定义一个属性,并获取或设置该属性的值。但请问通过这种方法,能否将此值改为指定的一个变量,即如下。

    public void Generate(int bbb)
    {
       PropertyBuilder pbNumber = tb.DefineProperty(
      "Number",
      PropertyAttributes.HasDefault,
      typeof(int),
      null);
    
      我想要的结果相当于属性以下为形式获取
      pbNumber{get{return bbb;} set{bbb = value;}}
      而不是将值写入隐含的 m_number 变量。谢谢
    
    }
    
    

     


    2011年4月13日 6:02

答案

  • DefineProperty 是以 emit 的方式,在 JIT 的时候动态定义一个属性到某个类型上,而直接的属性声明则是在编译时将属性元数据以及其 getter,setter 的代码以 IL 的形式写进 PE 文件中去。两者的区别是前者发生在运行时,而后者发生在编译时。
    Mark Zhou
    • 已建议为答案 Aspen VJ 2011年4月18日 2:52
    • 已标记为答案 mldarkMember 2011年4月18日 11:54
    2011年4月13日 7:46

全部回复

  • DefineProperty 是以 emit 的方式,在 JIT 的时候动态定义一个属性到某个类型上,而直接的属性声明则是在编译时将属性元数据以及其 getter,setter 的代码以 IL 的形式写进 PE 文件中去。两者的区别是前者发生在运行时,而后者发生在编译时。
    Mark Zhou
    • 已建议为答案 Aspen VJ 2011年4月18日 2:52
    • 已标记为答案 mldarkMember 2011年4月18日 11:54
    2011年4月13日 7:46
  • 同我的问题有关系吗?大哥,别忽悠我啊。
    2011年4月13日 7:51
  • 自己顶上
    2011年4月14日 9:34
  • 呵呵  你犯了一个错误  你搞清楚是电脑是机器   不是人脑啊  怎么知道你的要求啊 你用的方式就像一楼说的那样 方式给人看的 不是给电脑搞花样
    My Blog<
    2011年4月16日 13:38
    版主