我有一个A类,它包含一组对象。该类的每个实例都根据不同的逻辑填充集合。我不时需要更新所有馆藏。 我认为如果类有一个方法来保存用于填充集合的逻辑,并且我可以在创建对象时设置这个逻辑,那么可以这样做。 像这样:
MyClass instance = new MyClass();
instance.updateCollection = { logic for filling the collection } //
每个对象的逻辑都不同。
由于
答案 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();
}
}