奇怪的情况......我需要创建一个需要调用类成员的类的新实例。但是我无法通过构造函数传递对调用类的引用。
我正在寻找的解决方案是这样的:
Public Class ChildClass
Public Sub New(args)
_MyMember = GetMemberFromCallingClass()
...
...
End Sub
End Class
我希望无需手动将任何引用或变量从调用类传递给ChildClass的新实例。
这是否可行,如果是这样,我应该怎样看待我的代码。
答案 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
遍历堆栈以提取调用类的类型信息,但您将无法提取实际实例。如果您希望另一个类中的代码具有另一个类的特定实例的访问成员,那么您将不得不传递该引用。