序列化对函数的调用

时间:2011-10-16 20:15:39

标签: c# wcf command-pattern

我需要在我的应用程序中实现task的概念。 在我的项目中,任务是必须执行的操作,并由名称标识:每个任务还​​有输入参数(类型和值)并生成一个或多个输出。

必须实现Task类,如何表达“具有某种结果的操作”的概念?我可以将操作的名称存储在字符串属性中,但是如何表达此操作返回的类型? 同样,当这些参数也可以是不同类型时,如何实现操作的输入参数列表?

目标是序列化Task对象并将其发送到另一个节点。接收器分析收到的Task对象,读取操作的名称并执行相应的功能。

例如,假设节点A和节点B“具有”以下方法......

节点A的服务:

- double getAreaOfRectangle(double length, double width);
- double getAreaOfTriangle(double base, double height);
- double getAreaOfParallelogram(double base, double height).

节点B的服务:

- double getAreaOfCircle(double radius);
- double getAreaOfTrapezoid(double base1, double base2, double height).

如果节点C需要计算矩形的区域,它知道它必须联系节点A并通过指定操作(double areaOfRectangle )和节点A向节点A发送消息。输入(双宽度和双高度)。 类似地,如果节点C需要计算圆的面积,它必须向节点B发送消息,指定操作和半径的长度。 为了发送输入,因为它们可以是不同的类型(甚至是新的用户定义类型),我可以使用一个对象数组...

某些任务可能依赖于其他任务,即因为输入参数可能至少有另一个任务的输出,所以我还需要实现任务输出和另一个任务输入之间的链接。

我该如何定义课程?

1 个答案:

答案 0 :(得分:0)

您应该考虑在.NET 4.0中使用表达式树。有关详细信息,请参阅此文章

Serializing and Deserializing Expression Trees in C#