【发布时间】:2019-08-07 09:10:26
【问题描述】:
假设我们有以下类型层次结构:
public abstract class Base {}
public class A : Base {}
public class B : Base {}
我需要对来自Base 的所有派生类型执行相同的操作。这是我想出来的
public IList<T> DoWork<T>(string entityPath) where T : Base {
// get 'json' using 'entityPath'
return JsonConvert.DeserializeObject<List<T>>(json);
}
现在我的问题是以某种方式在消费者类的 for 循环中对所有派生类调用 DoWork()。我希望工作是这样的:
var entities = new Dictionary<string, Type> {
['a', TypeOf(A)],
['b', TypeOf(B)]
}
foreach(var e in entitties) {
DoWork<e.Value>(e.Key)
}
这显然是行不通的。
如果这种方法完全有缺陷,我很想知道替代方案。
【问题讨论】:
标签: c#