gpt4 book ai didi

c# - 在 C# 中,通过父类的反射检索子类

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:07 24 4
gpt4 key购买 nike

在下面的代码中:

using System;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyChild x = new MyChild();
System.Console.ReadKey();
}
}

class MyParent
{
protected static void TestFunction()
{
System.Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
}

class MyChild : MyParent
{
public MyChild()
{
TestFunction();
}
}
}

我希望静态方法输出“ConsoleApplication1.MyChild”,因为这是调用类型。这可能吗?我在反射对象中的任何地方都找不到它。

最佳答案

您不能使用静态方法执行此操作,因为您不是真正MyChild 的实例上调用它。它永远只会在 MyParent 上调用。

请注意,如果您将方法设置为非静态,这可能甚至无法工作,因为您询问的是什么类型声明正在执行的方法,它实际上是父类(子类类不声明方法,它只是继承它)。

但是,如果您使该方法成为非静态方法,您将可以访问 GetType() 实例方法,该方法将准确返回您想要的类型。

关于c# - 在 C# 中,通过父类的反射检索子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com