重新定义一个方法

时间:2012-02-14 13:31:26

标签: c#

我有一个A类,它包含一组对象。该类的每个实例都根据不同的逻辑填充集合。我不时需要更新所有馆藏。 我认为如果类有一个方法来保存用于填充集合的逻辑,并且我可以在创建对象时设置这个逻辑,那么可以这样做。 像这样:

MyClass instance = new MyClass();

instance.updateCollection = { logic for filling the collection } //

每个对象的逻辑都不同。

由于

3 个答案:

答案 0 :(得分:2)

您可以使用Action轻松完成此操作。

在构造函数中传递所需的Action,或者创建一个允许您设置所需Action的属性。

答案 1 :(得分:1)

听起来你应该使用像Factory这样创建这些对象的东西,但也存储对它们的引用。然后,您可以在工厂内部使用单独的方法来更新工厂内的每个集合。

另外 - 不要将自己限制在一个班级。如果你接受多态和继承的思想而不是与它们作斗争,你会发现C#更容易,更有趣。

答案 2 :(得分:1)

以下是使用Action类的示例:

class MyClass
{
  private readonly Action<List<string>> _updateAction;

  private readonly List<string> _collection = new List<string>();

  public MyClass(Action<List<string>> updateAction)
  {
    _updateAction = updateAction;
  }

  public void Update()
  {
    _updateAction(_collection);
  }
}


class MyClassTester
{
  public static void Test()
  {
    MyClass weekdayAdder = new MyClass(c => c.Add(DateTime.Now.DayOfWeek.ToString()));
    MyClass timeAdder = new MyClass((c) => c.Add(DateTime.Now.ToShortTimeString()));

    weekdayAdder.Update();
    weekdayAdder.Update();

    timeAdder.Update();
    timeAdder.Update();
    timeAdder.Update();
  }
}