如何将System.Type列表传入方法?

时间:2015-01-25 01:19:59

标签: c# .net

我正在尝试将System.Type列表传入方法。不是实例而是Type

现在有一个问题:我希望通过界面限制Type

例如,假设我有这个......

public interface IFoo
public class Cat : IFoo
public class Dog : IFoo

然后这个..

public void MyMethod(IEnumerable<Type> foos) 但只允许CatDog,而不是其他任何内容。

通常,我这样做:public void MyMethod(IEnumberable<IFoo> foos)但是这就是要求一些foo 实例,这不是我想要做的。

3 个答案:

答案 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>