当前位置: 首页>>代码示例>>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;未经允许,请勿转载。