我有这样的常用代码:在运行时传递一个类型FirstOrDefault
private bool DoItStartup(IReader reader, Type provider)
{
/// lots of common boiler plate code
/// like:
var abcProvider = reader.ReaderData as AbcProvider;
var xyzProvider = abcProvider.Provisions.FirstOrDefault<XyzProvider>(); // line 2
}
上面的代码行是有像50或一些供应商,目前2号线我想基本上做到这一点:
var xyzProvider = abcProvider.Provisions.FirstOrDefault<typeOf(provider)>();
这不起作用,可能是因为xyzProvider
不知道它是类型@编译时?不确定。但是有没有类似的模式可以使用。否则,我不必重复此克鲁夫特码50倍:(
我想知道为什么这实际上不起作用。 (如果它实际上不能满足他的需求) 如果这不起作用,那么为提供者提供一个整体接口可能是更好的解决方案。但我肯定想从这里开始。 – Rangoric 2010-08-09 13:22:31