나는 프로젝트의 기본 클래스 A
이InvokeMethod를 선택적 매개 변수로 사용할 수 있습니까?
많은 서브 클래스는
public class A
{
public void Process(string myString1, int myInt1 )
{
Type type = this.GetType();
type.InvokeMember("ImAChildMethod", System.Reflection.BindingFlags.InvokeMethod
| System.Reflection.BindingFlags.NonPublic
| System.Reflection.BindingFlags.Instance,
null,
this,
new object[] { myString1, myInt1 });
}
}
는 서브 클래스 A
에서 상속이 있습니다 : 나는 Exeucte 그래서
public class B:A
{
private void ImAChildMethod(string myString, int myInt)
{
Console.WriteLine (myInt + ","+myString);
}
}
:
new B().Process("aaa",15);
내가 얻을
15
, AAA
큰.
일이 지난 지금 우리는 보낼 필요 -하지 :
new object[] { myString1, myInt1 }
하지만
new object[] { myString1, myInt1 , MyDateTime }
을 (단, 모든 서브 클래스는이 날짜 매개 변수를 사용하여)
좋아, 그래서 우리는 (특정 장소 에서) :
private void ImAChildMethod(string myString, int myInt)
private void ImAChildMethod(string myString, int myInt ,DateTime myDateTime)
에 따라서 문제는 어디에 있습니까?
우리가 변경하지 않은 곳에서는 예외가 발생했습니다.
상담자 모든 하위 클래스를 통해 이동 한 날짜의이 매개 변수를 추가하지 않으
.
ImAChildMethod
에는 ,DateTime myDateTime
이없고 사전에 "사전 인식"하는 방법이 있습니까 : 사용하고 있으면 사용하고 그렇지 않으면 - 새 매개 변수를 무시하십시오. ?
Nb를
내가 서브 클래스를 통해 이동 및 선택 매개 변수를 추가해야한다는 확신 ...하지만 내가 잘못 될 수 있을까요?
ImAChildMethod가 A에서 추상이 아닌 이유가있는 이유는 무엇입니까? –
@ vc74 "ImAChildMethod"는 클라이언트에서 보내는 문자열이므로 클라이언트에서 "x"메서드를 실행할 수 있습니다. –