静态函数如何获得调用类的类型信息?

问题描述

各位朋友,我想从基类的静态函数中取得调用类的类型信息,但可以怎么做呢?如何是实列函数可以用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;}}

时间: 2024-08-03 19:06:05

静态函数如何获得调用类的类型信息?的相关文章

WCF调试异常信息:ServiceHost 仅支持类服务类型

"/CommonHelpServices"应用程序中的服务器错误. ServiceHost 仅支持类服务类型. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.  异常详细信息: System.ArgumentException: ServiceHost 仅支持类服务类型. 源错误:  执行当前 Web 请求期间生成了未经处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. 堆栈跟踪

java-我想根据这个类,写个接口,别人登录时,可以调用这个接口,显示类里面的信息

问题描述 我想根据这个类,写个接口,别人登录时,可以调用这个接口,显示类里面的信息 @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id", updatable = false, nullable = false) private Long id; //作业列表ID @Column(length = 200, name = "topic", nullable = false) p

C++运行时获取类型信息的type_info类与bad_typeid异常_C 语言

type_info 类type_info 类描述编译器在程序中生成的类型信息.此类的对象可以有效存储指向类型的名称的指针. type_info 类还可存储适合比较两个类型是否相等或比较其排列顺序的编码值.类型的编码规则和排列顺序是未指定的,并且可能因程序而异. 必须包含 <typeinfo> 标头文件才能使用 type_info 类. type_info 类的接口是: class type_info { public: virtual ~type_info(); size_t hash_cod

java 某个类的几个对象,这些对象调用类中一个函数,是各自拥有自己的函数代码还是使用同一段代码?

问题描述 1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码.3.第一次发帖,积分什么的不会搞,貌似自己也没有积分,呵呵,大家包涵! 解决方案 引用1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?这几个对象调用的当然是同一段代码了.jvm中有一个ja

Java编程思想学习笔记——类型信息

前言 运行时类型信息(RTTI:Runtime Type Information)使得我们可以在程序运行时发现和使用类型信息. Java在运行时识别对象和类的信息的方式: (1)一种是RTTI,它假定我们在编译时已经知道了所有的类型. (2)另一种是反射机制,它允许我们在运行时发现和使用类的信息. 为什么需要RTTI 以使用了多态的类层次结构的例子举例: 如上图,泛型是基类Shape,而派生出来的具体类有Circle,Square和Triangle. 这是一个类层次结构图,基类位于顶部,而派生类

有关基类指针调用类的虚函数时所遇到的问题

问题描述 有关基类指针调用类的虚函数时所遇到的问题 下列输出中其中一个第2处为什么无法输出相应字符串?并且当类中的输出字符串改为输出int 类型age时又为什么可以? 问题1:问题2: 解决方案 忽视了作用域

利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

(C#)利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

C++:RTTI(RunTime Type Information)运行时类型信息 详解

RTTI, RunTime Type Information, 运行时类型信息, 是多态的主要组成部分, 通过运行时(runtime)确定使用的类型, 执行不同的函数,复用(reuse)接口. dynamic_cast<>可以 使基类指针转换为派生类的指针, 通过判断指针的类型, 可以决定使用的函数. typeid(), 可以判断类型信息, 判断指针指向位置, 在多态中, 可以判断基类还是派生类. 代码: /* * test.cpp * * Created on: 2014.04.22 * A