我如何获得(是否可能)对创建另一个类的实例的类的引用

时间:2010-05-20 08:04:04

标签: vb.net class instance

奇怪的情况......我需要创建一个需要调用类成员的类的新实例。但是我无法通过构造函数传递对调用类的引用。

我正在寻找的解决方案是这样的:

Public Class ChildClass
    Public Sub New(args)
        _MyMember = GetMemberFromCallingClass()
        ...
        ...
    End Sub
End Class

我希望无需手动将任何引用或变量从调用类传递给ChildClass的新实例。

这是否可行,如果是这样,我应该怎样看待我的代码。

2 个答案:

答案 0 :(得分:0)

您执行类似下面的代码来获取调用类的类型:

Dim trace As New System.Diagnostics.StackTrace()
System.Diagnostics.Debug.WriteLine(trace.GetFrame(1).GetMethod().ReflectedType.Name)

然后,您可以在反射类型上调用GetMethods或“GetMember”或类似内容,以获得您想要的实际方法。

请注意,我认为ReflectedType将始终返回基类,因此如果您的方法是从子类调用的,但是无法确定无法记住,这可能无法正常工作。

答案 1 :(得分:0)

如果成员您的意思是要在调用类的实际实例上调用属性或方法,那么则不能这样做。您可以做的最好的事情是通过StackTrace遍历堆栈以提取调用类的类型信息,但您将无法提取实际实例。如果您希望另一个类中的代码具有另一个类的特定实例的访问成员,那么您将不得不传递该引用。