我正在尝试将System.Type
列表传入方法。不是实例而是Type
。
现在有一个问题:我希望通过界面限制Type
。
例如,假设我有这个......
public interface IFoo
public class Cat : IFoo
public class Dog : IFoo
然后这个..
public void MyMethod(IEnumerable<Type> foos)
但只允许Cat
和Dog
,而不是其他任何内容。
通常,我这样做:public void MyMethod(IEnumberable<IFoo> foos)
但是这就是要求一些foo 实例,这不是我想要做的。
答案 0 :(得分:3)
我假设您的方法只需要实现IFoo
的实例(对象)列表。如果是,那么使用IEnumerable<IFoo>
;如:
public void MyMethod(IEnumerable<IFoo> foos) { ... }
<强>更新强>
无法声明该方法仅接受实现Type
的{{1}}列表。您需要在自己的代码中进行验证。
interface
答案 1 :(得分:0)
public static void MyMethod<T>(Type theType) where T : ICat {}
ICat icat = new Class2();
//This will not work because its the wrong type
IDog idog = new Class2();
MyMethod<ICat>(icat.GetType());
答案 2 :(得分:-1)
public void MyMethod<T>(T theType) where T : List<Cat>, List<Dog>