3 가지 오버로드 된 메소드가있는 클래스가 있습니다.C# - 모든 메서드 인수를 다른 메서드로 전달?
class MyChildClass
{
public void myMethod(int i)
{ /* do something with i */ }
public void myMethod(int a, string b)
{ /* get i from a and b and call: */ myMethod(i); }
public void myMethod(string c, string d)
{ /* get i from c and d and call: */ myMethod(i); }
}
가 지금은 다른 (부모) 클래스의 private 필드가이 클래스를하고 싶습니다,하지만 난에 액세스 할 수 있도록하는 세 가지 방법이 필요합니다의 말합시다있다. 지금은 방금했습니다 :
class MyBaseClass
{
private MyChildClass myObject = new myChildClass(); // or similar
public void myMethod(int i)
{ myObject.myMethod(i); }
public void myMethod(int a, string b)
{ myObject.myMethod(a, b); }
public void myMethod(string c, string s)
{ myObject.myMethod(c, d); }
}
하나의 짧은 방법으로 구현하는 방법이 있습니까? 같을 것이다 뭔가 :
public void myMethod(unknownListOfArgumentsOfDifferentTypes args)
{ myObject.myMethod(args); }
나는 public void myMethod(params object[] something)
를 사용하려했지만 작동하지 않았다. 가능합니까, 아니면 모든 방법을 다른 방식으로 "프로젝트"해야합니까?
EDIT : 하위 클래스에는 다양한 메소드와 필드가 있으며, 상위 클래스에서만 액세스 할 수 있습니다. 그래서 부모님이 그 후에 파생되기를 원하지 않습니다. 나는 설명하지 않았다. 미안 자식 클래스가 그 세 가지 방법만을 포함하는 것처럼 보인다면 말이다. 그것들은 부모 클래스의 퍼블릭 메소드로서 접근 가능하게하고 싶습니다. 당신은 당신이거야 반사를 사용하여 일반적인 외관의 일종을 구현하는 경우
하지 마십시오. 그러한 코드를 작성하면 새끼 고양이가 죽습니다. –
이미하고있는 것처럼해야합니다. –
http://www.codeproject.com/Articles/5511/Dynamic-Proxy-Creation-Using-C-Emit은 올바른 방향으로 당신을 가리킬 수도 있습니다 – sroes