如何使C#对象动态覆盖函数?

时间:2014-07-31 03:30:38

标签: c# object

我正在使用XML反序列化在启动时从XML文件初始化大量对象。在对象的类中,我有一个计算函数。每个对象都有不同的计算方式,每个对象都需要是唯一的。将此与每个对象的数据联系起来的最佳方法是什么?我应该使用继承并覆盖计算函数吗?

编辑:所以来自XML的基类是:

public class Problem { public string ProblemName {get; set;} public Condition[] LotsOfConditions; } public class Condition { public string ConditionName { get; set; } public List<string> PropertyNames; public List<string> PropertyValues; } }

我的应用程序代码有一系列问题,这些问题是从XML文件反序列化的。我想在Condition类中添加一个计算方法,该方法将根据从文件加载到其中的属性名称/值返回结果。一些属性是字符串比较,而其他属性将被解析为双精度以执行计算。

我正在考虑使用从Condition类继承的计算方法创建新类,但我需要一种方法将正确的对象与XML文件中的内容联系起来。

2 个答案:

答案 0 :(得分:2)

将计算函数作为委托并将正确的计算函数传递给每个对象可能会更容易。然后,对象的实际计算函数将使用传递的方法进行计算。

答案 1 :(得分:1)

Strategy pattern完全是出于这种情况。

  

策略模式(也称为策略模式)是一种软件设计模式,可以在运行时选择算法的行为。