我希望能夠檢查類的實例上的自定義屬性的存在,但我希望能夠從該類的構造函數中執行該檢查。看看這個僞代碼:如何判斷使用接口的實例變量是否應用了自定義屬性?
namespace TestPackage
{
public class MyAttribute : Attribute { }
public interface IMyThing { }
public class MyThing : IMyThing
{
private bool HasMyAttribute { get; set; }
public MyThing()
{
if (/* some check for custom attribute */)
{
HasMyAttribute = true;
}
}
}
public class MyWrapper
{
[MyAttribute]
private readonly IMyThing _myThing;
public MyWrapper()
{
_myThing = new MyThing();
}
}
}
我有代碼註釋的if語句就是我想填寫的內容。這是可能的嗎?
不,這是不可能的。該屬性不應用於類實例,它應用於該字段。 – Amy
這對我來說似乎是一種反模式... – lintmouse
屬性在代碼中是靜態定義的,因此是靜態的,它們不會綁定到實例。它們適用於某種類型或這種類型的成員。 –