自定义属性 - 仅为私有成员设置属性用法

时间:2010-12-21 16:25:39

标签: c# attributes private-members attributeusage

我创建了一个自定义属性,我想设置AttributeUsage(或者属性类中的其他一些属性),这样我的属性只能是用于私人方法,这可能吗?

提前感谢您的答案!

1 个答案:

答案 0 :(得分:3)

C# (as of 4.0)中没有此类功能允许您根据成员的辅助功能限制attribute使用。

问题是你为什么要那样做?

因为给出了以下属性,

[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
sealed class MethodTestAttribute : Attribute
{
    public MethodTestAttribute()
    { }
}

及以下课程,

public class MyClass
{
    [MethodTest]
    private void PrivateMethod()
    { }

    [MethodTest]
    protected void ProtectedMethod()
    { }

    [MethodTest]
    public void PublicMethod()
    { }
}

您可以使用以下代码轻松获取私有方法的属性:

var attributes = typeof(MyClass).GetMethods().
                 Where(m => m.IsPrivate).
                 SelectMany(m => m.GetCustomAttributes(typeof(MethodTestAttribute), false));