【问题标题】:Check from which Class the object has been created检查对象是从哪个类创建的
【发布时间】:2020-12-03 04:42:42
【问题描述】:

我正在寻找一个常见问题,但即使在谷歌搜索之后也找不到任何解决方案。也许我搜索错了?

是否可以知道对象是从哪个类创建的? 例如:在 Visual Basic 代码中:

我有课,

Public Class dummyA

End Class

我还有一门课,

Public Class dummyMain
    Dim dmmA As New dummyA
End Class

如果对象是从 dummyMain 创建的,我可以签入 dummyA 吗?

用 c# 或 VB.Net 回答会很棒。谢谢。

【问题讨论】:

    标签: c# .net vb.net class


    【解决方案1】:

    最简单的方法是拥有一个重载的构造函数并将所有者传递给它。

    public class DummyA
    {
        public DummyA(object owner)
        {
           var createdByDummyMain = owner is DummyMain;
        }
    }
    

    然后做

    public class DummyMain
    {
        public DummyMain()
        {
            var dmmA = new DummyA(this);
        }
    }
    

    还有this,但它不会给你你想要的。还有其他建议处理StackFrame,但由于 JIT 优化,它不可靠。

    【讨论】:

    • 请注意,owner 的类型很少是Object,尤其是在调试场景之外。在大多数情况下,类型应该更具体,可以提供您希望该类使用的任何工具(很可能是某种Interface)。
    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 2010-11-27
    • 2021-02-26
    • 1970-01-01
    • 2023-03-30
    • 2018-09-10
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多