代码之家  ›  专栏  ›  技术社区  ›  flesh

是否有一个框架属性来隐藏一个成员以防在.NET中反射?

  •  3
  • flesh  · 技术社区  · 16 年前

    是否有一个属性隐藏成员(特别是属性) typeof(MyType).GetProperties() 在.NET中?

    我正在寻找一个快速修复方法,即不创建自定义属性等。

    谢谢

    4 回复  |  直到 16 年前
        1
  •  8
  •   Richard    16 年前

    不。

    反射允许查看所有内容,包括标记为private的成员。

    (最终,反射使用的元数据与clr(包括jit)使用的元数据相同。)

        2
  •  1
  •   Kurt Schelfthout    16 年前

    getproperties的特定重载(不带参数)只返回公共属性。所以您可以将该属性标记为私有/内部。否则,我同意上面的理查德。

        3
  •  1
  •   leppie    16 年前

    查看propertydescriptor而不是propertyinfo。

    这些方法可以通过重写派生类typeconverter中的2个属性方法来提供。

    有了一点独创性,你几乎可以让它做任何事情。

    我目前使用它为各种文化和值提供一个简单的属性列表,用于翻译目的,并将其提供给一个PropertyGrid,而类结构如下所示:

    class TagName
    {
      Culture culture;
      string content;
    }
    
    [TypeConverter(typeof(TagConverter))]
    class Tag
    {
      TagName[] tagNames;
    }
    

    在PropertyDescriptor中,您可以完全控制如何通过特定的PropertyDescriptor实例设置和获取值。

        4
  •  -1
  •   Aamir    16 年前

    如果可能的话,微软将是第一个自己为.NET程序集执行此操作的公司。