隐藏属性C#(3.5)上的继承命名参数

时间:2009-10-22 03:22:54

标签: c# reflection attributes postsharp

我正在使用PostSharp为我的属性添加一些编译时逻辑 - 在一次案例中[IndexedCategory ("CatName", CatIndex)]。麻烦来了,因为IndexedCategory派生自CompoundAspect - 它具有合理数量的命名参数。

有什么方法可以阻止这些被intellisence访问/显示?

干杯

2 个答案:

答案 0 :(得分:1)

我认为你应该重新考虑你的设计。我不确定继承是否可行,也许组合会更好地满足您的需求。如果你不了解你想要完成的任务,那么很难给出具体的例子,但是如果你不需要基类的属性,你为什么要从它继承呢?

答案 1 :(得分:1)

我尝试了一些事情......一个确定的方法是让它不是编译将重新声明属性过时或带走设置者 - 不过很好。< / p>

我尝试了一些其他设置(不可浏览,标记为不可变*),但它没有多大帮助:

[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中无法为属性设置,即使它可以在基础上。哈基和丑陋。