gpt4 book ai didi

c# - 如何获取初始化对象的类名c#

转载 作者:行者123 更新时间:2023-11-30 19:16:11 25 4
gpt4 key购买 nike

我有几门课。比方说:

public class A
{
public void SomeAction()
{
Debug.Write("I was declared in class: and my name is:");
}
}

public class B
{
public static A myClass = new A();
}

public class C
{
public static A myClass = new A();
}

public class D
{
public static A myClass = new A();
}

我想让 A 类中的“SomeAction”做的是打印出它是在哪个类中初始化的。

例如在另一个类中我调用了 C.myClass.SomeAction(); 它会打印出“I was declared in class C my name is >我的类(class)

我希望这是有道理的。

我这样做的原因是为了在自动化测试中进行调试。我明白这不是最好的做事方式,而是业务的要求。

最佳答案

无需继承或传递对象即可满足此要求;我们可以通过检查堆栈从构造函数的主体中获取调用构造函数的类的名称。

public class A
{
private string _createdBy;

public void SomeAction()
{
Console.WriteLine("I was declared in class [{0}]", _createdBy);
}

public A()
{
var stackFrame = new StackFrame(1);
var method = stackFrame.GetMethod();
_createdBy = method.DeclaringType.Name;
}
}

就性能而言,我假设您没有创建这些对象的许多实例。您还可以根据您是在进行 DEBUG 构建还是在某些其他设置上进行判断,以便在您的生产可执行文件中完全跳过这些内容。

关于c# - 如何获取初始化对象的类名c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26609892/

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