其中t:多个类
List Foo(Ilist list) where T : ??
有没有办法强制执行T.
少数几个class级之一?
最后我想对T进行切换..
谢谢。
以这种方式强制执行类型约束表示这几个类与常用function相关。
您应该实现一个通用接口,然后将类型限制为该接口:
public interface IUseful { public void UsefulMethod(); } List Foo (IList list) where T : IUseful { // You now have access to all common functionality defined in IUseful }
额外的好处是,现在您不必打开T
来实现不同的行为。 您可以让IUseful
的孩子实施自己的行为,然后自己调用每个行为。
您可以要求允许列表中允许的每个类实现一些接口ISomething
,然后创建List
。
最后我想对T进行切换..
不是切换对象的类型,而是在接口中使用方法并为每个类实现不同的方法可能更好。
在这种情况下,T可以是列出对象共享的公共基类或接口。 你可以拥有List
,如果它们各自实现了IFoo
接口,那么列表可以包含类Foo, Bar, and Baz
。 如果没有使用inheritance,您将会遇到一个对象列表。
你想要什么? 冒号后,您可以枚举约束T
的类型。
对于多个类,可能实现一个通用接口并将约束设置为它可能会起作用。
请查看此链接以获取更多详细信息: 类型参数的约束(C#编程指南)
据我所知,这是不可能的。 我建议从公共基类或接口派生有限的类集。