【发布时间】:2015-01-25 01:19:58
【问题描述】:
我正在尝试将System.Type 的列表传递给一个方法。不是实例,而是Type's。
现在有一个问题:我希望通过接口限制Type。
例如,假设我有这个......
public interface IFoo
public class Cat : IFoo
public class Dog : IFoo
然后这个..
public void MyMethod(IEnumerable<Type> foos)
但只允许 Cat's 和 Dog's 而不是其他任何东西。
通常,我这样做:public void MyMethod(IEnumberable<IFoo> foos) 但那是要求一些 foo instances,这不是我想要做的。
【问题讨论】:
-
很遗憾你不能。但是在运行时你可以检查你得到了正确的东西,例如。 typeof(IFoo).IsAssignableFrom(foo.GetType())
-
确实不能,但是当我想限制我的收藏时,我总是使用扩展方法 OfType()。看这里stackoverflow.com/questions/17263768/…