gpt4 book ai didi

c# - 调用基类静态方法时获取调用者派生类

转载 作者:太空狗 更新时间:2023-10-30 00:19:51 25 4
gpt4 key购买 nike

我想知道是否有可能(甚至通过反射等)在被调用的基类静态方法中获取调用者派生类。

例如,我有一个定义了静态方法的基类:

public MyBaseClass {
public static void MyBaseClassStaticMethod() { /** ... **/ }
}

和派生自它的类:

public MyDerivedClass : MyBaseClass { }

然后我调用:

MyDerivedClass.MyBaseClassStaticMethod()

在方法 MyBaseClassStaticMethod 中,是否有可能知道哪个是调用方派生类型
(即 MyDerivedClass)

我只需要一个字符串...

最佳答案

以下方式的泛型可用于解决您的场景

public class BaseClass<TDerived> where TDerived : BaseClass<TDerived>
{
public static void LogCallerType()
{
Console.WriteLine(typeof(TDerived).Name);
}
}

public class FooClass : BaseClass<FooClass> { }

public class BooClass : BaseClass<BooClass> { }

class Program
{
static void Main(string[] args)
{
FooClass.LogCallerType();
BooClass.LogCallerType();
}
}

这将依次输出以下内容

1. FooClass
2. BooClass

关于c# - 调用基类静态方法时获取调用者派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16301914/

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