重新定义方法

本文关键字:方法 定义 新定义 | 更新日期: 2023-09-27 18:24:22

我有一个类a,它包含一组对象。类的每个实例都根据不同的逻辑填充集合。我需要不时地更新所有的收藏。我在想,如果类有一个方法来保存填充集合的逻辑,并且我可以在创建对象时设置这个逻辑,那么这可能会实现。像这样:

MyClass instance = new MyClass();
instance.updateCollection = { logic for filling the collection } //

每个对象的逻辑都不同。

感谢

重新定义方法

您可以通过Action轻松实现这一点。

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

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

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

下面是一个使用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();
  }
}