2010-12-21 51 views
4

我創建自定義屬性,我想在設置AttributeUsage(或者在屬性類的一些其他屬性),所以我在我的屬性只能用來設置屬性用法在私人方法,這是可能的嗎?自定義屬性 - 只爲私人會員

在此先感謝您的答案!

+1

我很感興趣瞭解私有屬性的原因。 – Amy 2010-12-21 18:31:19

回答

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));