本文整理汇总了C#中System.Xml.Serialization.TypeScope.GetTypeMappingFromTypeDesc方法的典型用法代码示例。如果您正苦于以下问题:C# TypeScope.GetTypeMappingFromTypeDesc方法的具体用法?C# TypeScope.GetTypeMappingFromTypeDesc怎么用?C# TypeScope.GetTypeMappingFromTypeDesc使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Xml.Serialization.TypeScope
的用法示例。
在下文中一共展示了TypeScope.GetTypeMappingFromTypeDesc方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteTypeInfo
string WriteTypeInfo(TypeScope scope, TypeDesc typeDesc, Type type){
InitTheFirstTime();
string typeFullName = typeDesc.CSharpName;
string typeVariable = (string)reflectionVariables[typeFullName];
if (typeVariable != null)
return typeVariable;
if (type.IsArray)
{
typeVariable = GenerateVariableName("array", typeDesc.CSharpName);
TypeDesc elementTypeDesc = typeDesc.ArrayElementTypeDesc;
if (elementTypeDesc.UseReflection)
{
string elementTypeVariable = WriteTypeInfo(scope, elementTypeDesc, scope.GetTypeFromTypeDesc(elementTypeDesc));
writer.WriteLine("static "+typeof(Type).FullName+" "+typeVariable +" = " + elementTypeVariable + ".MakeArrayType();");
}
else
{
string assemblyVariable = WriteAssemblyInfo(type);
writer.Write("static "+typeof(Type).FullName+" "+typeVariable +" = "+assemblyVariable+".GetType(");
WriteQuotedCSharpString(type.FullName);
writer.WriteLine(");");
}
}
else
{
typeVariable = GenerateVariableName("type", typeDesc.CSharpName);
Type parameterType = Nullable.GetUnderlyingType(type);
if (parameterType != null)
{
string parameterTypeVariable = WriteTypeInfo(scope, scope.GetTypeDesc(parameterType), parameterType);
writer.WriteLine("static "+typeof(Type).FullName+" "+typeVariable +" = typeof(System.Nullable<>).MakeGenericType(new " + typeof(Type).FullName + "[] {"+parameterTypeVariable+"});");
}
else
{
string assemblyVariable = WriteAssemblyInfo(type);
writer.Write("static "+typeof(Type).FullName+" "+typeVariable +" = "+assemblyVariable+".GetType(");
WriteQuotedCSharpString(type.FullName);
writer.WriteLine(");");
}
}
reflectionVariables.Add(typeFullName, typeVariable);
TypeMapping mapping = scope.GetTypeMappingFromTypeDesc(typeDesc);
if (mapping != null)
WriteMappingInfo(mapping, typeVariable, type);
if (typeDesc.IsCollection || typeDesc.IsEnumerable){// Arrays use the generic item_Array
TypeDesc elementTypeDesc = typeDesc.ArrayElementTypeDesc;
if (elementTypeDesc.UseReflection)
WriteTypeInfo(scope, elementTypeDesc, scope.GetTypeFromTypeDesc(elementTypeDesc));
WriteCollectionInfo(typeVariable, typeDesc, type);
}
return typeVariable;
}
示例2: WriteTypeInfo
private string WriteTypeInfo(TypeScope scope, TypeDesc typeDesc, Type type)
{
this.InitTheFirstTime();
string cSharpName = typeDesc.CSharpName;
string str2 = (string) this.reflectionVariables[cSharpName];
if (str2 == null)
{
if (type.IsArray)
{
str2 = this.GenerateVariableName("array", typeDesc.CSharpName);
TypeDesc arrayElementTypeDesc = typeDesc.ArrayElementTypeDesc;
if (arrayElementTypeDesc.UseReflection)
{
string str3 = this.WriteTypeInfo(scope, arrayElementTypeDesc, scope.GetTypeFromTypeDesc(arrayElementTypeDesc));
this.writer.WriteLine("static " + typeof(Type).FullName + " " + str2 + " = " + str3 + ".MakeArrayType();");
}
else
{
string str4 = this.WriteAssemblyInfo(type);
this.writer.Write("static " + typeof(Type).FullName + " " + str2 + " = " + str4 + ".GetType(");
this.WriteQuotedCSharpString(type.FullName);
this.writer.WriteLine(");");
}
}
else
{
str2 = this.GenerateVariableName("type", typeDesc.CSharpName);
Type underlyingType = Nullable.GetUnderlyingType(type);
if (underlyingType != null)
{
string str5 = this.WriteTypeInfo(scope, scope.GetTypeDesc(underlyingType), underlyingType);
this.writer.WriteLine("static " + typeof(Type).FullName + " " + str2 + " = typeof(System.Nullable<>).MakeGenericType(new " + typeof(Type).FullName + "[] {" + str5 + "});");
}
else
{
string str6 = this.WriteAssemblyInfo(type);
this.writer.Write("static " + typeof(Type).FullName + " " + str2 + " = " + str6 + ".GetType(");
this.WriteQuotedCSharpString(type.FullName);
this.writer.WriteLine(");");
}
}
this.reflectionVariables.Add(cSharpName, str2);
TypeMapping typeMappingFromTypeDesc = scope.GetTypeMappingFromTypeDesc(typeDesc);
if (typeMappingFromTypeDesc != null)
{
this.WriteMappingInfo(typeMappingFromTypeDesc, str2, type);
}
if (typeDesc.IsCollection || typeDesc.IsEnumerable)
{
TypeDesc desc2 = typeDesc.ArrayElementTypeDesc;
if (desc2.UseReflection)
{
this.WriteTypeInfo(scope, desc2, scope.GetTypeFromTypeDesc(desc2));
}
this.WriteCollectionInfo(str2, typeDesc, type);
}
}
return str2;
}