本文整理汇总了C#中IScope.GetMembersNamed方法的典型用法代码示例。如果您正苦于以下问题:C# IScope.GetMembersNamed方法的具体用法?C# IScope.GetMembersNamed怎么用?C# IScope.GetMembersNamed使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IScope
的用法示例。
在下文中一共展示了IScope.GetMembersNamed方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LoadNestedTypeDef
//name doesn't containt the namespace, only the type name
private INamedTypeDefinition LoadNestedTypeDef(string name, IScope<ITypeDefinitionMember> parent)
{
INamedTypeDefinition type = null;
string firstName = null;
string remainingName = null;
int plusIdx = name.IndexOf('+');
if (plusIdx > 0)
{
firstName = name.Substring(0, plusIdx);
remainingName = name.Substring(plusIdx + 1);
}
else if (plusIdx < 0)
{
firstName = name;
}
else /* plusIdx = 0 */
{
throw new Exception("Invalid type def name");
}
int numGenArgs;
string shortName;
Util.ParseGenName(firstName, out shortName, out numGenArgs);
IName firstIName = NameTable.GetNameFor(shortName);
foreach (ITypeDefinitionMember member in parent.GetMembersNamed(firstIName, false))
{
type = member as INamedTypeDefinition;
if (type != null && type.GenericParameterCount == numGenArgs)
break;
}
if (type != null)
{
if (remainingName == null)
return type;
else
{
return LoadNestedTypeDef(remainingName, type);
}
}
else
throw new Exception("Cannot find the type: " + name);
}
示例2: LoadTypeDef
// Name doesn't containt the namespace, only the type name.
private INamedTypeDefinition LoadTypeDef(string name, IScope<INamespaceMember> parent)
{
INamedTypeDefinition type = null;
string firstName = null;
string remainingName = null;
int plusIdx = name.IndexOf('+');
if (plusIdx > 0)
{
firstName = name.Substring(0, plusIdx);
remainingName = name.Substring(plusIdx + 1);
}
else if (plusIdx < 0)
{
firstName = name;
}
else /* plusIdx = 0 */
{
throw new Exception("Invalid type def name");
}
int numGenArgs;
string shortName;
Util.ParseGenName(firstName, out shortName, out numGenArgs);
IName firstIName = NameTable.GetNameFor(shortName);
foreach (INamespaceMember member in parent.GetMembersNamed(firstIName, false))
{
type = member as INamedTypeDefinition;
if (type != null && type.GenericParameterCount == numGenArgs)
break;
}
// HACK to handle class names like "gcroot<System::String ^>"
// TODO: Does this result in false matches?
if (type == null)
{
foreach (INamespaceMember member in parent.GetMembersNamed(NameTable.GetNameFor(firstName), false))
{
type = member as INamedTypeDefinition;
if (type != null)
break;
}
}
if (type != null)
{
if (remainingName == null)
return type;
else
{
return LoadNestedTypeDef(remainingName, type);
}
}
else
{
throw new Exception("Cannot find the type: " + name);
}
}