C# 模式来定义类之间的依赖关系,以及它们必须初始化的顺序
我有一个加载过程,它需要根据加载对象所属的类,按特定顺序初始化加载对象。有些类持有对其他类的引用,并且依赖于那些首先初始化的其他类 现在,我在每个类中用一个静态数字字段定义顺序。程序员负责提出数字值。然后,我可以按照这个数字对对象进行排序,并按照正确的顺序初始化它们C# 模式来定义类之间的依赖关系,以及它们必须初始化的顺序,c#,design-patterns,C#,Design Patterns,我有一个加载过程,它需要根据加载对象所属的类,按特定顺序初始化加载对象。有些类持有对其他类的引用,并且依赖于那些首先初始化的其他类 现在,我在每个类中用一个静态数字字段定义顺序。程序员负责提出数字值。然后,我可以按照这个数字对对象进行排序,并按照正确的顺序初始化它们 public interface ILookUpCollectible { // this is the number the classes get sorted by before initializing
public interface ILookUpCollectible
{
// this is the number the classes get sorted by before initializing
int LoadPostProcessOrder { get; }
}
// start initializing, sort them first
// sort:
var sortedList = list.OrderBy(l => l.LoadPostProcessOrder);
int i = 0;
foreach (var item in sortedList)
{
item.LoadPostProcess(sn);
i++;
}
有更好的方法吗?我希望每个类都明确指出它所依赖的其他类(通常是因为它包含对这些类的引用),然后从中派生顺序。这些类彼此之间是否有静态引用?听起来你想把它们变成实例,让依赖项显式的构造函数参数。很多IoC/DI容器可以像这样构造对象,自动发现依赖项并将它们注入构造函数,看起来你需要的是一个DI容器,比如Unity(或任何其他容器)。如果这是您的意思,则类/对象可以通过全局静态集合相互引用。您是否可以将类视为父类和子类?在这种情况下,每个对象的初始化都有最后一行
InitializeChildren()
。在这个例程中,您有一个循环,它遍历同一级别的所有子级,以启动它们的初始值设定项。因此,您将触发整个层次结构的初始化级联。。。