本文整理汇总了C#中TypeSpec.GetCustomClientLibraryType方法的典型用法代码示例。如果您正苦于以下问题:C# TypeSpec.GetCustomClientLibraryType方法的具体用法?C# TypeSpec.GetCustomClientLibraryType怎么用?C# TypeSpec.GetCustomClientLibraryType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TypeSpec
的用法示例。
在下文中一共展示了TypeSpec.GetCustomClientLibraryType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetTypeReference
private TypeReference GetTypeReference(TypeSpec type)
{
// TODO: Cache typeRef
var sharedType = type as RuntimeTypeSpec;
var transformedType = type as TransformedType;
var enumType = type as EnumTypeSpec;
TypeReference typeRef = null;
if (type.GetCustomClientLibraryType() != null)
typeRef = Import(type.GetCustomClientLibraryType());
else if (enumType != null)
{
if (!this.enumClientTypeDict.TryGetValue(enumType, out typeRef))
{
throw new InvalidOperationException(
string.Format(
"Generated property has a reference to {0}, but has probably not been included in SourceTypes.",
enumType.Type.FullName));
}
}
else if (transformedType != null)
typeRef = this.clientTypeInfoDict[transformedType].InterfaceType;
else if (sharedType != null)
{
if (sharedType.Type.IsGenericType)
typeRef = Import(sharedType.Type.GetGenericTypeDefinition());
else
typeRef = Import(sharedType.Type);
if (sharedType.IsGenericType)
{
if (sharedType.GenericArguments.Count() != typeRef.GenericParameters.Count)
throw new InvalidOperationException("Generic argument count not matching target type");
var typeRefInstance = new GenericInstanceType(typeRef);
foreach (var genericArgument in sharedType.GenericArguments)
typeRefInstance.GenericArguments.Add(GetTypeReference(genericArgument));
typeRef = typeRefInstance;
}
}
if (typeRef == null)
throw new InvalidOperationException("Unable to get TypeReference for TypeSpec");
return typeRef;
}