當前位置: 首頁>>代碼示例>>C#>>正文


C# Module.GetStructurallyEquivalentType方法代碼示例

本文整理匯總了C#中System.Compiler.Module.GetStructurallyEquivalentType方法的典型用法代碼示例。如果您正苦於以下問題:C# Module.GetStructurallyEquivalentType方法的具體用法?C# Module.GetStructurallyEquivalentType怎麽用?C# Module.GetStructurallyEquivalentType使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在System.Compiler.Module的用法示例。


在下文中一共展示了Module.GetStructurallyEquivalentType方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: TryToFindExistingInstance

 protected virtual void TryToFindExistingInstance(Module/*!*/ module, TypeNode declaringType, TypeNodeList/*!*/ templateArguments, Identifier/*!*/ mangledName,
   Identifier/*!*/ uniqueMangledName, out TypeNode result, out Identifier unusedMangledName)
 {
     unusedMangledName = null;
     string mangledNameString = mangledName.Name;
     int n = templateArguments.Count;
     int tiCount = 0;
     bool lookInReferencedAssemblies = TargetPlatform.GenericTypeNamesMangleChar != '`'; //REVIEW: huh? why not use IsGeneric?
     result = module.GetStructurallyEquivalentType(this.Namespace == null ? Identifier.Empty : this.Namespace, mangledName, uniqueMangledName, lookInReferencedAssemblies);
     if(this.IsGeneric)
     {
         if(result == null)
             unusedMangledName = mangledName;
         return;
     }
     while(result != null)
     {
         //Mangled name is the same. But mangling is not unique (types are not qualified with assemblies), so check for equality.
         if(this == result.Template && (declaringType == result.DeclaringType || !this.IsGeneric))
         {
             bool goodMatch = (result.TemplateArguments != null || n == 0) && result.TemplateArguments.Count == n;
             for(int i = 0; goodMatch && i < n; i++)
                 goodMatch = templateArguments[i] == result.TemplateArguments[i];
             if(goodMatch)
                 return;
         }
         //Mangle some more
         mangledName = new Identifier(mangledNameString + (++tiCount).ToString());
         result = module.GetStructurallyEquivalentType(this.Namespace == null ? Identifier.Empty : this.Namespace, mangledName, null, lookInReferencedAssemblies);
     }
     if(result == null)
         unusedMangledName = mangledName;
 }
開發者ID:modulexcite,項目名稱:SHFB-1,代碼行數:33,代碼來源:Nodes.cs


注:本文中的System.Compiler.Module.GetStructurallyEquivalentType方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。