2010-05-20 7 views
1

이상한 상황 ... 호출 클래스의 멤버가 필요한 클래스의 새 인스턴스를 만들어야합니다. 하지만 난 생성자를 통해 호출 클래스에 대한 참조를 전달할 수 없습니다. 다른 클래스의 인스턴스를 만드는 클래스에 대한 참조를 얻는 방법 (가능한)

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

내가이 수동으로 ChildClass에의 새로운 인스턴스에 호출하는 클래스에 대한 참조 또는 변수를 전달하지 않고 작업 할 :

내가 찾고 있어요 솔루션은이 같은 것입니다.

이것이 가능한지, 그렇다면 내 코드의이 부분을 만들기 위해 무엇을 봐야할까요?

+0

또 다른 옵션은 호출자 구성원에 대한 참조를 저장할 수있는 경우 어떤 고유 한 자식 클래스에서 액세스 할 수있는 스레드를 기반으로 할 수 있습니다. AssignReference (ByRef ParentClassMember As Object)와 같은 메소드 만들기 – Cadde

답변

0

당신은 아래의 호출 클래스의 유형을 얻을 수있는 코드 같은 것을 할 : 당신이 원하는 실제적인 방법을 얻을 수

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

그런 다음 반영 유형에 GetMethods 또는 'GetMember'또는 이와 유사한 전화를 할 수 있습니다 .

ReflectedType은 항상 기본 클래스를 반환하므로 자식 클래스에서 메서드가 호출되었지만 확실히 기억할 수없는 경우 제대로 작동하지 않을 수 있습니다.

+0

나는이 정보를 얻은 것만 큼 가까운 방법이라고 생각합니다 ... Brian Gideons를 계정으로 회신하면 발신자 유형을 얻을 수 있지만 실제 발신자는 얻을 수 없습니다 정보를 제공해 주셔서 감사합니다! – Cadde

0

호출 클래스의 실제 인스턴스에서 속성이나 메서드를 호출하려는 경우 멤버로 아니요을 사용할 수 없습니다. 가장 좋은 방법은 호출 클래스의 유형 정보를 추출하려면 StackTrace을 통해 스택을 걷는 것이지만 실제 인스턴스를 추출 할 수는 없습니다. 다른 클래스의 코드가 다른 클래스의 특정 인스턴스에 액세스 할 수있게하려면 해당 참조를 전달해야합니다.

관련 문제