日期:2014-05-17  浏览次数:20779 次

有关泛型类调用的问题
我现在在一个窗体中需要通过调用一个实例化的泛型类来完成功能。
现有一个窗体A 一个泛型类B<T> 所有的功能都封装在该类中
如何能够把泛型类B<T>的实例传送给窗体A,并让A能够调用?

------解决方案--------------------
既然已经实例化了,那么T是什么已经指定了,当然可以让A使用,不过A只能使用已经确定了T参数的B类实例,不能使用没有确定参数的泛型对象,

除非你把A也定义为泛型A<T>,不过A是窗体,你不能这么做,

------解决方案--------------------
你可以让你的泛型类继承接口啊,这样你将B<T>的实例通过接口在A中定义并调用即可。
另外C#4.0支持dynamic关键字,就不需要知道你的T是什么了,在运行时确定。
------解决方案--------------------
你仔细看下dynamic的解释和用法,那个其实并不是一个数据类型,而是代表运行时解释的一个关键字,如果用typeof(dynamic)查看其类型的话,等价于typeof(object),object是不受任何约束的,但是运行时代表了一个真实类型而不是object,因此可以直接通过点号访问内部所有成员。