重新定义方法
本文关键字:方法 定义 新定义 | 更新日期: 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();
}
}