37 lines
1.4 KiB
C#
37 lines
1.4 KiB
C#
![]() |
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq.Expressions;
|
|||
|
|
|||
|
namespace CPF.Windows.Json.Deserialize
|
|||
|
{
|
|||
|
[ExpressionBuildType(DeserializeBuildTypeEnum.WrongGenericKey)]
|
|||
|
internal class WrongGenericKeyBuild : ExpressionJsonResolve
|
|||
|
{
|
|||
|
internal static BlockExpression Build(Type type)
|
|||
|
{
|
|||
|
List<Expression> methodCall = new List<Expression>();
|
|||
|
LabelTarget returnValueLable = Expression.Label(type, "returnValue");
|
|||
|
/*
|
|||
|
if(_ReadNullOrObjLeft)
|
|||
|
return null;/return default(ValueType)
|
|||
|
*/
|
|||
|
Expression ifReadNullOrObjLeftReturnNull1 = Expression.IfThen(Expression.Call(ExpressionMembers.Reader, JsonReader._ReadNullOrObjLeft),
|
|||
|
Expression.Return(returnValueLable, Expression.Constant(null, type)
|
|||
|
));
|
|||
|
methodCall.Add(ifReadNullOrObjLeftReturnNull1);
|
|||
|
|
|||
|
/*
|
|||
|
reader.ReadObjRight()
|
|||
|
*/
|
|||
|
methodCall.Add(Expression.Call(ExpressionMembers.Reader, JsonReader._ReadObjRight));
|
|||
|
|
|||
|
/*
|
|||
|
return new dictionary<,>;
|
|||
|
*/
|
|||
|
methodCall.Add(Expression.Return(returnValueLable, Expression.New(type)));
|
|||
|
methodCall.Add(Expression.Label(returnValueLable, Expression.New(type)));
|
|||
|
return Expression.Block(methodCall);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|