【发布时间】:2013-01-28 15:29:09
【问题描述】:
我有一个创意问题。我想给类型一个依赖于依赖项的顺序。 :)
例子:
public class Oil
{}
public class Seat
{}
public class Wheel : IDependOn<Oil>
{}
public class Car : IDependOn<Wheel>, IDependOn<Seat>
{}
所以,现在我想要一个函数(包括反射),它给我一个Dictionary<Int32, Type>,其中Int32 索引是顺序。
函数定义如下:
public Dictionary<Int32, Type> GetOrderedTypes(List<Type> types);
这个例子的结果应该是:
<1, Oil>
<2, Seat>
<3, Wheel>
<4, Car>
任务可能要复杂得多,但逻辑始终相同。
- 没有依赖关系的类型的顺序最低。
- 对于具有相同依赖关系的类型,顺序并不重要。
有人可以在这方面帮助我吗?
【问题讨论】:
-
要开始使用,请尝试搜索“拓扑排序”。
-
为什么要使用字典而不是列表?
-
blogs.msdn.com/b/ericlippert/archive/2004/03/16/90851.aspx 是对拓扑排序的一个很好的介绍。代码是 JavaScript,但翻译成 c# 并不难。
标签: c#