当前位置: 首页>>代码示例>>C#>>正文


C# TypeSpec.GetCustomClientLibraryType方法代码示例

本文整理汇总了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;
        }
开发者ID:BeeWarloc,项目名称:Pomona,代码行数:48,代码来源:ClientLibGenerator.cs


注:本文中的TypeSpec.GetCustomClientLibraryType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。