首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何为继承的类函数使用GetCurrentMethod()

在C#中,可以使用GetCurrentMethod()方法来获取当前正在执行的方法的MethodInfo对象。MethodInfo对象提供了有关方法的信息,包括方法的名称、参数、返回类型等。

要为继承的类函数使用GetCurrentMethod(),需要遵循以下步骤:

  1. 确保你的类是继承自其他类的。例如,我们创建一个名为ChildClass的类,它继承自ParentClass
代码语言:csharp
复制
class ParentClass
{
    public void PrintMethodName()
    {
        var method = System.Reflection.MethodBase.GetCurrentMethod();
        Console.WriteLine("当前方法名称:" + method.Name);
    }
}

class ChildClass : ParentClass
{
    public void SomeMethod()
    {
        PrintMethodName();
    }
}
  1. 在子类中创建一个方法,该方法将调用继承的父类方法,并使用GetCurrentMethod()来获取当前方法的信息。
代码语言:csharp
复制
class ChildClass : ParentClass
{
    public void SomeMethod()
    {
        PrintMethodName();
    }
}
  1. 在子类的方法中,调用继承的父类方法,并使用GetCurrentMethod()来获取当前方法的信息。
代码语言:csharp
复制
class ChildClass : ParentClass
{
    public void SomeMethod()
    {
        PrintMethodName();
    }
}

以上代码中,PrintMethodName()方法使用GetCurrentMethod()来获取当前方法的信息,并打印出方法的名称。

这样,当你调用子类的SomeMethod()方法时,它将调用继承的父类的PrintMethodName()方法,并打印出当前方法的名称。

这是一个简单的示例,展示了如何为继承的类函数使用GetCurrentMethod()。在实际开发中,你可以根据需要使用GetCurrentMethod()来获取更多方法信息,并根据业务逻辑进行处理。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java继承中static成员函数重写

在java中,static成员函数是否可以被重写呢? 结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常非static函数那样运行。...也就是说,虽然你可以定义一个重写函数,但是该函数没有多态特性。...static in testClass1 16 tc2.SMothod(); //输出结果为 static in testClass2 17 } 18 } 从结果中可以看到,当我们用父实例引用...(实际上该实例是一个子类)调用static函数时,调用是父static函数。...原因在于方法被加载顺序。 当一个方法被调用时,JVM首先检查其是不是方法。如果是,则直接从调用该方法引用变量所属中找到该方法并执行,而不再确定它是否被重写(覆盖)。

1.7K40

【C++】泛型编程 ⑧ ( 模板继承语法 | 普通 继承 模板语法 | 模板 继承 模板语法 | 继承模板必须指定具体类型参数列表 | 继承 模板 必须重写构造函数 )

一、普通 继承 模板语法 1、普通 继承 模板语法 模板 作为父 , 子类 继承 模板 父 , 需要 指定 具体类型参数列表 ; 需要 重写 构造函数 , 其中必须调用 模板 具体..., 模板子类 与 普通子类 区别就是 , 模板子类 需要在尖括号中指定 具体 类型参数列表 数据类型 ; 此时 , 在继承时 , 被继承 模板 必须 声明 类型参数列表 , 将具体泛型类型写在尖括号中..., 调用 模板 具体 构造函数 , 如果 子类 继承 模板父 , 如果 子类没有实现 构造函数 , // 模板 继承时 , 需要具体化 模板 // 也就是 指定 模板 类型参数列表...二、模板 继承 模板语法 1、模板 继承 模板语法 普通 继承 模板时 , 需要指定 模板 具体 参数类型 , 下面代码中 具体类型就是 int ; class Son : public..., 使用 Son2 中 泛型 T 替代 ; // 模板 继承 模板 template class Son2 : public Father { public:

57230

【C++】继承 ⑧ ( 继承 + 组合 模式对象 构造函数 和 析构函数 调用规则 )

一、继承 + 组合 模式对象 构造函数和析构函数调用规则 1、场景说明 如果一个继承了 基 , 又 在中 维护了一个 其它类型 成员变量 , 那么 该类 构造 与 析构 , 就需要涉及到... 本身 构造函数 和 析构函数 , 父 构造函数 和 析构函数 , 成员变量 构造函数 和 析构函数 ; 2、调用规则 在 继承 + 组合 情况下 , 构造函数 与 析构函数 调用规则如下...析构函数 ; 最后 , 调用 父 析构函数 ; 二、完整代码示例分析 ---- 1、代码分析 在下面的代码中 , 继承关系 : C 继承了 B class C : public B , B ...继承了 A class B : public A ; 组合关系 : D 是一个普通 , 在 C 中维护了一个 D 成员变量 ; class C : public B { public:...; A 和 B 构造函数 , 是 父构造函数 ; D 构造函数 , 是 成员构造函数 ; C 构造函数 , 是 自身构造函数 ; 构造函数调用顺序为 : 父 -> 成员 -> 自身 , 符合上述调用原则

16110

派生对基中虚函数和非虚函数继承效果

而虚函数作用,主要是为了让父指针可以调用子类函数,这种是在运行时才决定调用哪个函数 1、虚函数:   C++函数主要作用是“运行时多态”,父中提供虚函数实现,为子类提供默认函数实现。...子类可以重写父函数实现子类特殊化。 2、纯虚函数:   C++中包含纯虚函数,被称为是“抽象”。抽象不能使用new出对象,只有实现了这个纯虚函数子类才能new出对象。   ...C++中纯虚函数更像是“只提供申明,没有实现”,是对子类约束,是“接口继承”。   C++中纯虚函数也是一种“运行时多态”。...3、普通函数:   普通函数是静态编译,没有运行时多态,只会根据指针或引用“字面值”对象,调用自己普通函数。   普通函数是父为子类提供“强制实现”。   ...因此,在继承关系中,子类不应该重写父普通函数,因为函数调用至于对象字面值有关。 参考链接

7010

【Kotlin】Kotlin 继承 一 ( 继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )

继承基本方式 II . 使用 final 禁止继承 / 方法重写 III . 父没有主构造函数 IV . 父有主构造函数 V . 父构造函数与子类构造函数总结 I ....继承格式 : 使用 " : " 继承 ; 如果该父有主构造函数 , 那么子类必须至少有一个主构造函数或次构造函数 , 子类构造函数下面会根据不同情况详细解析 ; //注意这里构造函数需要实际调用...继承限制 : 子类使用 : 父 ( 父构造函数参数列表 ) ① 继承限制 : 只有被 open 修饰 , 才能有子类继承该类 , 普通不允许被继承 ; ② 方法被重写限制 : 只有被...open 修饰方法 , 才能被子类重写 , 被重写子类函数 , 必须使用 override 修饰 ; ③ open 修饰限制 : open 关键字不能修饰 final , 给 final 添加...使用 final 禁止继承 / 方法重写 ---- final 修饰 : 如果类被 final 关键字修饰 , 那么该类无法被 open 关键字修饰 , 也就无法被继承 ; final 修饰方法

1.1K10

【Kotlin】继承 ① ( 使用 open 关键字开启继承 | 使用 open 关键字开启方法重写 )

文章目录 一、使用 open 关键字开启继承 二、使用 open 关键字开启方法重写 一、使用 open 关键字开启继承 ---- Kotlin 中 默认都是 封闭 , 无法被继承 ,...如果要想继承 , 需要在定义使用 open 关键字 ; 定义一个普通 Kotlin : class Person(val name: String, val age: Int) {..., 继承 普通 kotlin , 在编译时会提示 This type is final, so it cannot be inherited from 报错信息 ; 如果使用 open 关键字...{ // 方法体 } 注意 , 父中 被重写方法 必须 使用 open 关键字修饰 , 才能开启方法重写 , 否则默认情况下方法是 final 类型 ; 如果在父中 , 被重写函数是普通函数...Person 中 , sayHello 函数是普通函数 , 默认情况下普通函数不能被重写 , 因此报上述错误 ; 在 父中 , 使用 open 关键字 , 开启函数重写 , 在编译时就不会进行报错

58010

python学习笔记6.4-多重继承(super()函数)

说到面向对象,就少不了研究面向对象特点(继承,封装,多态)。Python中继承关键是正确使用super()函数,而这恰好是我们理解最不好地方。...(避免重复继承,保证每个父继承一次) 当使用super()函数时,python会继续从MRO中下一个开始搜索,只要每一个重新定义过方法(比如init())都使用了super()函数,并且调用了他们一次...关于super()函数,还有一个很神奇功能:它并不是一定要关联到某个直接父上,甚至可以在没有直接父使用它。...,但是B中使用super函数仍然可以调用A中init()。...这就说明,在使用super()函数时可能会产生我们并不想要结果,所以我们要遵守一些基本规则来避免这些情况发生。

96090

从零开始学C++之继承(二):继承与构造函数、派生到基转换

一、不能自动继承成员函数 构造函数(包括拷贝构造函数) 析构函数 =运算符 二、继承与构造函数构造函数不被继承,派生中需要声明自己构造函数。...声明构造函数时,只需要对本类中新增成员进行初始化,对继承成员初始化调用基构造函数完成(如果没有给出则默认调用默认构造函数)。...从输出可以看出: 派生对象构造次序: 先调用基对象成员构造函数,接着是基构造函数,然后是派生对象成员构造函数,最后是派生自身构造函数。...初始化列表参数多个且其中有调用基构造函数时,先执行基构造函数(从最远开始,如果多重继承则按继承顺序);其他对象成员若不止一个,则按定义顺序构造,与初始化列表顺序无关。...::xx 访问,b.b_ 访问存在歧义,实际上static成员不属于任一对象。

1.5K00

【c++】多态&&虚函数&&抽象&&继承函数表详解

支付宝首先会分析你账户数据,比如你是新用户、比如你没有经常支付宝支付等等,那么你需要被鼓励使用支付宝,那么就你扫码金额 =random()%99;比如你经常使用支付宝支付或者支付宝账户中常年没钱,那么就不需要太鼓励你去使用支付宝...那么在继承中要构成多态还有两个条件: 必须通过基指针或者引用调用虚函数 被调用函数必须是虚函数,且派生必须对基函数进行重写 2.2 虚函数函数:即被virtual修饰成员函数称为虚函数...,派生函数在不加virtual关键字时,虽然也可以构成重写(因 为继承后基函数继承下来了在派生依旧保持虚函数属性),但是该种写法不是很规范,不建议 这样使用*/ /*void BuyTicket...普通函数继承是一种实现继承,派生继承了基函数,可以使用函数继承函数实现。...虚函数继承是一种接口继承,派生继承是基函数接口,目的是为了重写,达成多态,继承是接口。所以如果不实现多态,不要把函数定义成虚函数 4.

30310

怎么让继承直接使用XIB布局试图

怎么让继承直接使用XIB布局试图 最近做一个小工具,一键替换key,就是为了解放双手,不然每次运行测试和正式版本都要手动替换key。...自己几乎所有的项目都是用全代码,但是平时demo和一些小工具还是用上可视化试图和最新语言Swift. 做到是一个mac程序,几个界面基本上功能按钮都是一样。就封装了一个,用上了xib。...但是拖拽一个NSView,继承与我们刚才自定义试图,运行发现出不来我们XIB界面。 我自己分析了一下原因,虽然我们让XIB指向我们自己自定义试图,但是关联不起来试图。...新建一个OToolBarView继承于NSView. class OToolBarView: NSView { } 因为Storyboard不允许直接拖拽NSView,允许我们拖拽NSViewController...但是我们是自定义试图,用不上NSViewController。就新建一个xib来做了。 ? 名字命名为OToolBarView.xib我们在xib里面关联刚才创建。 ?

1.1K20

【C++】继承 ⑥ ( 继承构造函数和析构函数 | 类型兼容性原则 | 父指针 指向 子类对象 | 使用 子类对象 为 父对象 进行初始化 )

一、public 公有继承 - 示例分析 1、类型兼容性原则 类型兼容性原则 : C++ " 类型兼容性原则 “ 又称为 ” 赋值兼容性原则 " ; 子类代替父 : 需要 基 ( 父 ) 对象...地方 , 都可以使用 " 公有继承 " 派生 ( 子类 ) 对象 替代 , 该 派生 ( 子类 ) 得到了 除 构造函数 和 析构函数 之外 所有 成员变量 和 成员方法 ; 功能完整性 :..." 公有继承 " 派生 ( 子类 ) 本质上 具有 基 ( 父 ) 完整功能 , 使用 可以解决问题 , 使用 公有继承派生 都能解决 ; 特别注意 : " 保护继承 " 和..." 私有继承 " 派生 , 是 不具有 基 完整功能 , 因为 最终继承派生 , 无法在 外部调用 父 公有成员 和 保护成员 ; 2、类型兼容性原则应用场景 " 类型兼容性原则..." 应用场景 : 直接使用 : 使用 子类对象 作为 父对象 使用 ; 赋值 : 将 子类对象 赋值给 父对象 ; 初始化 : 使用 子类对象 为 父对象 初始化 ; 指针 : 父指针 指向

22620

从Java继承重名static函数浅谈解析调用与分派

今天被实习生问了这么个问题: 在java中,static成员函数是否可以被重写呢? 结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常非static函数那样运行。...也就是说,虽然你可以定义一个重写函数,但是该函数没有多态特性。...(实际上该实例是一个子类)调用static函数时,调用是父static函数。...在重载过程中,编译器根据方法参数静态类型(比如tc1静态类型是class1,tc2是class2,但本文这里不是重载!)来确定使用方法版本,这叫做静态分派。...由于static方法是一种编译期可知,运行期不可变方法,所以尽管子类和父都有同样方法名,而事实上它们是不同方法,也是完全可以区分方法。

1.2K30

使用Python构造函数和析构函数

1、问题背景当使用Python时,可以使用构造函数和析构函数来初始化和清理实例。构造函数在创建实例时自动调用,而析构函数在删除实例时自动调用。...构造函数__init__在Person实例被创建时被调用,它将实例name属性设置为传入参数,并将实例的人口计数population加1。...析构函数__del__在Person实例被删除时被调用,它将实例的人口计数population减1。...问题是,如果我在程序中显式地删除Person实例,析构函数__del__是否会被自动调用,或者我是否需要在“main”程序/中添加一些东西,如上面的代码示例所示?...具有__del__意味着垃圾回收器放弃检测和清理任何循环链接,例如丢失对链表最后一个引用。您可以从gc.garbage中获取被忽略对象列表。您有时可以使用弱引用来完全避免循环。

10910

c++ 继承强制转换时函数表工作原理

本文通过简单例子说明子类之间发生强制转换时虚函数如何调用,旨在对c++继承函数作用机制有更深入理解。...因为在child2函数表中,共存在三个函数,分别为f() b() a(),其中函数b()是第二个,因此编译器就会把对象c1对应内存来当做child2内存布局来解析(注意内存里内容不变,还是...c1,即为child1内存布局,在这里只有虚函数表),此时在child1函数表中也找第二个函数,找到了函数a(),因此输出“child1::a()”,运行正常。...但这种行为可能是危险,若使用内存布局并不适合真实内存,很可能造成访问越界等问题(如上例中“pc21->a();”,这次就在B函数表中找第三个函数,结果没有找到(访问越界),函数运行时崩溃。)...2、通过上述例子可知,虚函数在虚函数表中存储顺序是与声明顺序一致,而不是虚函数名字字符串排序,本例中为f() b() a(),虽然编程时自动补全提示框中显示顺序是a() b() f(),但可能已经经过内部优化

1.1K30

何为非常不确定行为(并发)设计安全 API,使用这些 API 时如何确保安全

.NET 中提供了一些线程安全类型, ConcurrentDictionary,它们 API 设计与常规设计差异很大。如果你对此觉得奇怪,那么正好阅读本文。...---- 不确定性 像并发集合一样, ConcurrentDictionary、ConcurrentQueue,其设计为线程安全,于是它每一个对外公开方法调用都不会导致其内部状态错误...你只能依靠其方法返回值来使用刚刚调用那一刻确定状态。...v : null; return value; } 这两段代码都使用到了可能涉及线程安全一些代码。前者使用 Interlocked 做原则操作,而后者使用并发字典。...1 个方法组合在一起才能使用 API,这会让调用方获取不一致状态。

14920

【OpenHarmony】TypeScript 语法 ⑤ ( | 创建和使用 | 继承 | 迭代器遍历 | for of 语句遍历元素 | for in 语句遍历下标 )

public name: string = ""; private age: number = 0; TypeScript 构造函数 , 使用 constructor 关键字定义...// 定义 成员属性 public name: string = ""; private age: number = 0; // 构造函数 constructor.../play 中运行 TypeScript 代码 : [LOG]: "Jerry is 12 years old" 二、TypeScript 子类使用 extends 继承 TypeScript ...可以通过使用 extends 关键字 , 继承 成员属性 和 成员方法 , 使得子类具有父 特征 ; 继承代码示例 : class Student { // 定义 成员属性...父 class Employee extends Student { // 子类自己方法 private skill: String = ""; // 子类构造函数

8210

23.C++- 继承多种方式、显示调用父构造函数、父子之间同名函数、virtual虚函数  上章链接: 22.C++- 继承与组合,protected访问级别

C++中,继承方式共有3种: public继承 -指父成员(变量和函数)访问级别,在子类中保持不变 private继承 -指父成员,在子类中变为private私有成员....-也就是说子类无法访问父所有成员 protected继承 -指父public成员 ,在子类中变为protected保护成员,其它成员级别保持不变 如下图所示: ?...注意: protected继承只针对子类有效 比如当父是protected继承时,则子类子类就无法访问父所有成员 一般而言,C++项目只用到public继承 显示调用父构造函数 当我们创建子类对象时...子类可以定义父同名成员和同名函数 子类中成员变量和函数将会隐藏父同名成员变量和函数同名成员变量和函数依然存在子类中 通过作用域分辨符(::)才可以访问父同名成员变量和函数..., 所以执行父同名成员变量和函数需要作用域分辨符(::)才行 父子间兼容 以上示例Parent父Child子类为例 子类对象可以直接赋值给父对象使用,比如: Parent p; Child

3K90
领券