我正在使用 PostSharp 向我的属性添加一些编译时逻辑 - 在一次情况下[IndexedCategory ("CatName", CatIndex)]
。问题来了,因为IndexedCategory
源自CompoundAspect
- 它具有合理数量的命名参数。
有什么方法可以防止这些被智能访问/显示?
干杯
我正在使用 PostSharp 向我的属性添加一些编译时逻辑 - 在一次情况下[IndexedCategory ("CatName", CatIndex)]
。问题来了,因为IndexedCategory
源自CompoundAspect
- 它具有合理数量的命名参数。
有什么方法可以防止这些被智能访问/显示?
干杯
我尝试了一些事情......让它不编译的一种可靠方法是将属性重新声明为过时或带走setter - 不过不好。
我尝试了其他一些设置(不可浏览,标记为不可变*),但没有多大帮助:
[ImmutableObject(true)] // I'm sure this used to toggle intellisense for attribs
public class FooAttribute : BarAttribute
{
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
[ReadOnly(true)]
public new string Name { get { return base.Name; } }
}
无论如何,在上面Name
不能为一个属性设置,即使它可以在基础上。哈克和丑陋。
我认为你应该重新考虑你的设计。我不确定继承是否可行,也许组合会更好地满足您的需求。在不了解您要完成的工作的情况下,很难给出具体的示例,但是如果您不需要基类的属性,为什么要从它继承呢?