在运行时为表达式树生成List <string>中的类

时间:2017-01-30 08:38:22

标签: c# serialization lambda expression-trees dynamictype

我有

new List<string> {"MyTypeA", "MyTypeB"};

如何在运行时生成类型?

public class MyTypeA {decimal value {get;set;}};
public class MyTypeB; {decimal value {get;set;}};

让我解释为什么我需要这个。 Here,我写了关于表达式树的序列化。最后,我用于此任务Serialize.Linq。序列化和反序列化工作正常但我遇到了另一个问题。 我的算法使用以下主体构建表达式:

{(args[0] - args[1] + args[0])}

为表达式(MyTypeA - MyTypeB + MyTypeA)获取此主体,其中MyTypeA和MyTypeB是参数。 args [n]它是参数数组。问题是我不知道数组元素和参数之间的关联。如果我没弄错的话,我应该有类似的东西:

{(MyTypeA - MyTypeB + MyTypeA)}

MyTypeA&amp; MyTypeB是运行时生成的类型。 我知道可以编写一个包装器并一次发送带有参数的表达式和数组。但在我的情况下,我今天可以在服务器上发送表达式并在一周后发送参数。 所以我问这个问题。

这是Source code

我怀疑的功能:

public Expression<Func<decimal[], decimal>> Parse()方法按字符读取表达式字符串。

private Expression ReadParameter(TextReader reader, Expression arrayParameter)

创建表示应用数组索引运算符的表达式。

0 个答案:

没有答案