5

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

必须实现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 ) 和输入 (double width和 double height ) 向节点 A 发送消息。同样,如果节点C需要计算圆的面积,它必须向节点B发送消息,指定操作和半径的长度。为了发送输入,因为它们可能是不同的类型(甚至是新的用户定义类型),我可以使用一个对象数组......

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

我应该如何继续定义类?

4

1 回答 1

0

您应该考虑在 .NET 4.0 中使用表达式树。有关更多信息,请参阅本文

在 C# 中序列化和反序列化表达式树

于 2011-10-16T20:24:55.880 回答