瀏覽代碼

* 修复ComponentOfAnalyzer 当Getcomponent AddComponent 参数为typeof(T)类型时 无法解析的问题 (#359)

tanghai 3 年之前
父節點
當前提交
82c579ac3a
共有 1 個文件被更改,包括 5 次插入2 次删除
  1. 5 2
      Share/Analyzer/Analyzer/EntityComponentAnalyzer.cs

+ 5 - 2
Share/Analyzer/Analyzer/EntityComponentAnalyzer.cs

@@ -13,7 +13,7 @@ namespace ET.Analyzer
     {
         private const string Title = "实体类添加或获取组件类型错误";
 
-        private const string MessageFormat = "组件类型: {0} 不允许作为实体: {1} 的组件类型! 若要允许该类型作为参数,请使用ParentTypeAttribute对组件类标记父级实体类型";
+        private const string MessageFormat = "组件类型: {0} 不允许作为实体: {1} 的组件类型! 若要允许该类型作为参数,请使用ComponentOfAttribute对组件类标记父级实体类型";
 
         private const string Description = "实体类添加或获取组件类型错误.";
 
@@ -109,7 +109,6 @@ namespace ET.Analyzer
             //Component为非泛型调用
             else
             {
-
                 SyntaxNode? firstArgumentSyntax = invocationExpressionSyntax.GetFirstChild<ArgumentListSyntax>()?.GetFirstChild<ArgumentSyntax>()
                         ?.ChildNodes().First();
                 if (firstArgumentSyntax == null)
@@ -149,6 +148,10 @@ namespace ET.Analyzer
                 }else if (firstArgumentSymbol is INamedTypeSymbol namedTypeSymbol)
                 {
                     componentTypeSymbol = namedTypeSymbol;
+                }else if (firstArgumentSymbol is ITypeParameterSymbol)
+                {
+                    // 忽略typeof(T)参数类型
+                    return;
                 }
                 else if (firstArgumentSymbol != null)
                 {