private ExpressionManager <BoxedVariable <Variable>, BoxedExpression> GetExpressionManager() { var valuedDecoder = new AnalysisWrapper.TypeBindings <Local, Parameter, Method, Field, Property, Event, Type, Attribute, Assembly, Expression, Variable> .ValueExpDecoder(this.Mdriver.Context, this.Mdriver.MetaDataDecoder); var expDecoder = BoxedExpressionDecoder <Variable> .Decoder(valuedDecoder, (object o) => ExpressionType.Unknown); var expEncoder = BoxedExpressionEncoder <Variable> .Encoder(this.Mdriver.MetaDataDecoder, this.Mdriver.Context); var expManager = new ExpressionManagerWithEncoder <BoxedVariable <Variable>, BoxedExpression>(this.timeout, expDecoder, expEncoder); return(expManager); }
internal static BoxedExpressionDecoder <Type, Variable, Expression> BoxedDecoder <Local, Parameter, Method, Field, Property, Event, Type, Attribute, Assembly, Expression, Variable, LogOptions> ( this IMethodDriver <Local, Parameter, Method, Field, Property, Event, Type, Attribute, Assembly, Expression, Variable, LogOptions> mdriver ) where Type : IEquatable <Type> where Expression : IEquatable <Expression> where Variable : IEquatable <Variable> where LogOptions : IFrameworkLogOptions { Contract.Ensures(Contract.Result <BoxedExpressionDecoder <Type, Variable, Expression> >() != null); var result = decoderCache as BoxedExpressionDecoder <Type, Variable, Expression>; if (result == null) { decoderCache = result = BoxedExpressionDecoder <Variable> .Decoder(new AnalysisWrapper.TypeBindings <Local, Parameter, Method, Field, Property, Event, Type, Attribute, Assembly, Expression, Variable> .ValueExpDecoder(mdriver.Context, mdriver.MetaDataDecoder), (obj) => mdriver.TypeFor(obj)); } return(result); }