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

在.Net中是否有一个框架属性来隐藏成员以防反射?,.net,reflection,.net,Reflection,是否有一个属性可以从.net中的typeof(MyType).GetProperties()隐藏成员(特别是属性) 我正在寻找一个快速解决方案-即不创建自定义属性等 谢谢不用了 反射允许人们看到一切,包括标记为private的成员 (最终,反射使用的元数据与CLR(包括JIT)使用的元数据相同。)如果可能的话,Microsoft将首先自己为.NET程序集执行此操作:)。GetProperties的特定重载(不带参数)只返回公共属性。因此,您可以将该属性标记为private/internal。否则

是否有一个属性可以从.net中的
typeof(MyType).GetProperties()隐藏成员(特别是属性)

我正在寻找一个快速解决方案-即不创建自定义属性等

谢谢

不用了

反射允许人们看到一切,包括标记为private的成员


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

如果可能的话,Microsoft将首先自己为.NET程序集执行此操作:)。

GetProperties的特定重载(不带参数)只返回公共属性。因此,您可以将该属性标记为private/internal。否则,我同意上面Richard的观点。

请查看PropertyDescriptor而不是PropertyInfo

这些可以通过重写TypeConverter派生类中的2个Properties方法来提供

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

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

class TagName
{
  Culture culture;
  string content;
}

[TypeConverter(typeof(TagConverter))]
class Tag
{
  TagName[] tagNames;
}

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

鉴于.NET的大部分源代码都是可用的,这一定是一种政治观点。源代码之所以可用,首先是因为反射。他们知道他们无法隐藏源代码。然后,微软自己设计了反射。如果他们想隐藏他们的代码,他们可以这样做。这可能是由于行业压力。但是,这是一个单独的讨论。微软没有理由试图隐藏.NET文件。毕竟,他们有律师:)[视觉能力并不意味着使用合法性]非常有趣的东西:)