问题描述
各位朋友,我想从基类的静态函数中取得调用类的类型信息,但可以怎么做呢?如何是实列函数可以用this关键字引用类的当前实例,但静态函数不知怎办。例如:publicclassBase{publicstaticTypeGetInvokeClassType(){//在这儿如何取得A的类型?Typetype=null;returntype;}}publicclassA:Base{}//以下调用A.GetInvokeClassType();
解决方案
解决方案二:
试试typeof(A),估计应该没问题吧,虽说是继承的
解决方案三:
如果知道是A还用获取?如果另一个派生类B来调用呢?
解决方案四:
你的意思是Baseobj=newA();obj.GetInvokeClassType();这样么?不用这样写,直接obj.GetType();就可以了。微软已经考虑过这个问题了。
解决方案五:
我是要用A类来调用静态函数,静态函数要知道调用它的目标的类型。obj实例能调用静态函数么?
解决方案六:
貌似无解。。。
解决方案七:
给publicstaticTypeGetInvokeClassType()加个参数。在A中把this传进去,不知道行不行。可能要用到泛型。
解决方案八:
传参数可以实现。问题是我调用了你,你还不知道我是谁?这说不过去,我觉得应该有方法。
解决方案九:
如果是:classFoo{voidBar(){Base.GetInvokeClassType()}}
这里的Foo类可以知道,但是,lz的情况下,编译器直接把A.GetInvokeClassType()编译成调用Base.GetInvokeClassType(),所以无法知道A类
解决方案十:
publicclassBase{publicvirtualstaticTypeGetInvokeClassType(){//在这儿如何取得A的类型?Typetype=Base类型;returntype;}}publicclassA:Base{publicvirtualstaticTypeGetInvokeClassType(){//在这儿如何取得A的类型?Typetype=A类型;returntype;}}