正常情况下,当您创建自定义Attribute类时,任何具有getter和setter的公共属性都会自动公开给在该类上应用该属性的人员,以便使用该属性的人员可以指定该属性的值。你可以在c#中用“隐藏”属性创建一个自定义属性吗?
我想一个自定义属性类暴露了一个特定属性的getter和setter,但不让这个属性被指定为命名参数为创建时的属性。例如:
[AttributeUsage(AttributeTargets.Class)]
class MyCustomAttribute : Attribute
{
public bool MyProperty
{
get { /* do something */ }
set { /* do something */ }
}
}
// The following line should be a compiler error, MyProperty should
// be hidden for attribute initialization!
[MyCustomAttribute(MyProperty=true)]
class MyClass
{
};
有什么办法可以达到这个目的吗?
没办法。如果它是公开的,你可以设置它。 – JustAndrei
为什么不让“内部”属性? –
无论如何,你为什么要这么做?告诉我们你的用例,也许我们可以提出另一种解决方案。 –