[英]Roslyn: Get Symbol from catch declaration having no variable name
我有一個CatchDeclarationSyntax
實例,我想獲取語句中CatchDeclarationSyntax
的類型的符號。
如果catch聲明包含要捕獲的類型的變量名,則可以按照本文中的說明進行操作: 從CatchDeclaration獲取符號
例:
...
catch(NullReferenceException exception)
{
...
}
獲取NullReferenceException
類型的符號:
ILocalSymbol catchDeclarationSymbol = semanticModel.GetDeclaredSymbol(catchDeclarationSyntax);
ITypeSymbol exceptionType = catchDeclarationSymbol.Type;
這很好。
但是,如果catch聲明中不包含要捕獲的類型的變量名,那么我會遇到問題。
例:
...
catch(NullReferenceException)
{
...
}
獲取類型為NullReferenceException
的符號無法通過這種方式工作:
ILocalSymbol catchDeclarationSymbol = semanticModel.GetDeclaredSymbol(catchDeclarationSyntax);
// catchDeclarationSymbol is now null
在這種情況下,有人知道如何獲取NullReferenceException
類型的符號嗎?
但是,如果catch聲明中不包含要捕獲的類型的變量名,那么我會遇到問題。
那是因為當沒有符號被聲明時,您不能使用GetDeclaredSymbol
。 catch(NullReferenceException exception)
聲明exception
符號,但是catch(NullReferenceException)
沒有聲明。
相反,您可以訪問該類型的語法節點,然后獲取該類型的類型符號:
ITypeSymbol exceptionType = model.GetTypeInfo(catchDeclarationSyntax.Type).Type;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.