C#中判断一个方法是否覆盖(override)了父类的方法
来源:互联网 发布:java报表怎么做 编辑:程序博客网 时间:2024/05/28 09:33
MethodInfo.DeclaringType 用来获取声明这个方法的类。利用这个属性就可以区分子类的方法是继承自父类的,还是覆盖了父类的方法。
- namespace ConsoleApp
- {
- class Program
- {
- class Base
- {
- public virtual void Func() { }
- }
- class A1 : Base
- {
- public override void Func() { }
- }
- class A2 : Base
- {
- }
- static void Main(string[] args)
- {
- Base a1 = new A1();
- Base a2 = new A2();
- MethodInfo m1 = a1.GetType().GetMethod("Func");
- MethodInfo m2 = a2.GetType().GetMethod("Func");
- System.Console.WriteLine("m1.DeclaringType = [" + m1.DeclaringType + "] ,for short [" + m1.DeclaringType.Name + "]");
- System.Console.WriteLine("m2.DeclaringType = [" + m2.DeclaringType + "] ,for short [" + m2.DeclaringType.Name + "]");
- bool derived1 = m1.DeclaringType.Equals(typeof(Base));//false
- bool derived2 = m2.DeclaringType.Equals(typeof(Base));//true
- System.Console.WriteLine("derived1 = " + derived1);
- System.Console.WriteLine("derived2 = " + derived2);
- System.Console.ReadLine();
- }
- }
- }
输出:
m1.DeclaringType = [ConsoleApp.Program+A1] ,for short [A1]
m2.DeclaringType = [ConsoleApp.Program+Base] ,for short [Base]
derived1 = False
derived2 = True
- C#中判断一个方法是否覆盖(override)了父类的方法
- ”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
- 自己写了一个用c#判断文件名是否有效的方法
- 覆盖父类方法的new和override关键字
- c#中override方法的编译
- C#中判断socket是否已断开的方法
- C#中判断socket是否已断开的方法
- C#中判断socket是否已断开的方法
- C#中判断文件夹或文件是否存在的方法
- C#中判断socket是否已断开的方法
- C#中判断socket是否已断开的方法
- 方法覆盖(Override)
- SQL Server中判断一个数据库是否存在的方法
- SQL Server中判断一个数据库是否存在的方法
- C/C++中判断一个文件是否存在的方法
- SQL Server中判断一个数据库是否存在的方法
- 在程序中判断一个文件是否可读的方法
- C++中判断一个文件是否存在的方法
- Singleton模式用在什么时候上
- 国外程序员网站 java
- 动态库的生成与对.so的读取
- 深入浅出C# 中文版 图文皆译 第三章 page97
- 关于拷贝构造函数 (一)
- C#中判断一个方法是否覆盖(override)了父类的方法
- 人生!靠什么生存
- sql字符串处理函数
- 网志1
- ServerSocket,ClientSocket控件源码阅读笔记
- 使用DBHelper
- 求点到直线的垂足(C#代码)
- Log Explorer 的使用
- 在服务端用c#代码来刷新父框架