[英]Resolving parameter type in Roslyn
我正在使用Roslyn來實現自定義業務規則。 目前,我有點卡住了,我必須在調用方法時驗證參數的類型。 驗證方法正在被調用或包含參數沒有問題。 我已使用GetSymbolInfo解析IdentifierNameSyntax以獲取當前語法的符號。 它不是null並且有我正在尋找的信息,如下所示:
CandidateReason: None
CandidateSymbols: Length = 0
Symbol: Local System.Threading.Tasks.TaskScheduler ui
當我進入Symbol屬性時,我想驗證ui變量確實是一個TaskScheduler,但它已經是一個不成功的操作幾天了......基本上,這是我在Symbol中的信息
Local System.Threading.Tasks.TaskScheduler ui
CanBeReferencedByName: true
ConstantValue: null
ContainingAssembly: Assembly TestProject, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
ContainingNamespace: Namespace ConsoleApplication1
ContainingSymbol: Method void ConsoleApplication1.TypeName.Test()
ContainingType: NamedType ConsoleApplication1.TypeName
DeclaredAccessibility: NotApplicable
DeclaringSyntaxReferences: Length = 1
HasConstantValue: false
HasUnsupportedMetadata: false
HighestPriorityUseSiteError: 2147483647
IsAbstract: false
IsCatch: false
IsConst: false
IsDefinition: true
IsExtern: false
IsFixed: false
IsFor: false
IsForEach: false
IsImplicitlyDeclared: false
IsOverride: false
IsSealed: false
IsStatic: false
IsUsing: false
IsVar: true
IsVirtual: false
Kind: Local
Language: "C#"
Locations: Length = 1
MetadataName: "ui"
Name: "ui"
OriginalDefinition: Local System.Threading.Tasks.TaskScheduler ui
OriginalSymbolDefinition: Local System.Threading.Tasks.TaskScheduler ui
Type: NamedType System.Threading.Tasks.TaskScheduler
binder: {Microsoft.CodeAnalysis.CSharp.BlockBinder}
這是我到目前為止得到的ui類型:
如果需要,我可以提供示例代碼,但我無法共享我所做的代碼。 對於那些可能想知道的人,在TDD下模擬控制台應用程序,我們有自己的工具來創建單元測試。 但它對這種特殊情況沒有任何影響。 感謝您的幫助,我真的很感激!
你需要轉換ISymbol
到ILocalSymbol
,這是公開的。
然后,您可以使用Type
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.