2010-08-22 60 views
0

的字段的類名,特別是在覆蓋Asp.net MVC ValidationAttribute時,是否有可能知道具有帶屬性標記的字段的類名? (AttributeUsage是AttributeTargets.Property)C#屬性:如何知道具有屬性

public class UniqueAttribute: ValidationAttribute 

     public override bool IsValid(object value) 
     { 
      // how to know which class has this attribute? 
     } 

回答

1

在給定屬性的一個實例,它是不可能確定哪些類,字段,方法,等等發源於此屬性。主要是因爲它不需要附加到一個。所有屬性可以創建就像一個正常的對象,因此不能安裝任何東西

var instance = new UniqueAttribute(); 

您可能需要使用不同的構造函數,但一個必須存在,否則它不能在第一時間被應用於成員。

雖然可以換個方法。給定一個成員或類型來確定它是否應用了給定的屬性。例如,假設UnqiueAttribute附有一個SomeType類型的實例,則此代碼將檢索它。

var type = typeof(SomeType); 
var attrib = (UniqueAtrtibute)type.GetCustomAttributes(typeof(UnqiueAttribute),true)[0]; 
相關問題