簡體   English   中英

屬性的Roslyn檢查類型

[英]Roslyn Check Type of an Attribute

我試圖找出一種適當的方法來比較羅斯林中的屬性數據。

static bool ResolveAttributes(IMethodSymbol methodSymbol)
{
    var attributes = methodSymbol.GetAttributes();

    return null == attributes.FirstOrDefault(attr => isIDEMessageAttribute(attr, typeof(MyAttributeType)));
}

static bool IsIDEMessageAttribute(AttributeData attribute, Type desiredAttributeType)
{
    //How can I check if the attribute is the type of desired?
}

如何檢查屬性是否為所需類型?

AttributeData.AttributeClass為您提供該屬性的Roslyn符號。 但是您有一個要與之進行比較的CLR運行時類型。 您可以只比較類型名稱等,以查看它們是否可能是相同的類型,也可以為MyAttributeType獲取Roslyn類型符號,這更正確。 這通常是通過

var desiredSymbol = sematicModel.Compilation.GetTypeByMetadataName(typeof(MyAttributeType).FullName)

暫無
暫無

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

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