簡體   English   中英

從INamedTypeSymbol.GetAttributes()獲取屬性對象,即AttributeData對象?

[英]Get Attribute object from INamedTypeSymbol.GetAttributes() i.e. AttributeData object?

我定義了以下屬性

[AttributeUsage(AttributeTargets.Class)]
class DemoAttribute : Attribute
{
  public string SomeInfo { get; }

  public DemoAttribute(string someInfo)
  {
    this.SomeInfo = someInfo;
  }
}

可以將其應用於某些類,如下所示:

[Demo("hello world")]
class Program { }

我提供了一個指向Program類的INamedTypeSymbol變量, namedTypeSymbol ,通過它我設法獲取了屬性的名稱。

foreach(var attr in namedTypeSymbol.GetAttributes())
{
  if(attr.AttributeClass.Name == "DemoAttribute") { ... }
}

但是,如何訪問設置為SomeInfo

您可以通過兩種方式將參數傳遞給屬性。 通過設置屬性( [Demo(SomeInfo="hello world")] )或通過構造函數進行操作。 如果您使用的命名方法,Ponas是正確的解決之道在於NamedArguments

但是,當您使用構造函數時,數據位於ConstructorArguments 這是TypedConstant的數組,可以從中獲取值"hello world"

string attributeData = (string)attr.ConstructorArguments[0].Value;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM