【发布时间】:2013-11-15 10:37:18
【问题描述】:
想象一下 Func Func<Arguments, bool?>,其中 Arguments 是一个抽象类。在某个地方,出于某种原因,我创建了一个这些函数的列表,其中包含所有类型的派生类作为参数。当然,Arguments 的类型对于调用 Func 之前的验证很重要。有没有办法获取Arguments的类型?
例如:
public bool? test(Arguments arg) {
Func test = Func<SomeArguments, bool?>;
Type argType = GetFirstArgumentType(test); // gives SomeArguments.GetType();
if (arg.GetType() == argType) {
return test(new SomeArguments());
}
return null;
}
【问题讨论】:
-
将它们存储在
Dictionary<Type, Func<object, bool?>>中,而不是它们的列表。如果您打算有重复项,您可能需要将其设为键值对列表。 -
您是否想弄清楚如何实现
GetFirstArgumentType? -
您是否正在寻找类似How to get actual type of an derived class from its parent interface 的东西,它也适用于派生类?
-
@ReedCopsey:是的,我是 ;-) 虽然我怀疑它是不可撤销的.. (?)
-
@JvN 我刚刚提供了一个答案 - 请注意,可能有更简单的方法来完成这个......