2017-11-28 8 views
0

둘 다 동일한 메소드이지만 다른 이름을 가진 두 개의 API가 있습니다.Abstract 클래스를 매개 변수로 사용하고 해당 클래스의 새 항목 만들기

두 클래스 모두에서 상속 된 추상 클래스를 만들었습니다.

이제 이러한 API를 사용하는 다른 클래스를 만들려고하고 있으며 어떤 API를 사용하는지 신경 쓰지 않으려합니다.

추상 클래스를 매개 변수로 전달하고이를 API 중 하나로 사용하려면 어떻게해야합니까?

더 좋은 방법이 있습니까?

예제 코드 :

public abstract class AbstractClass 
{ 
    public abstract string Func1(); 

} 
public class Class1: AbstractClass 
{ 
    public override string Func1() 
    { 
     return "Class1"; 
    } 

} 
public abstract class Class2: AbstractClass 
{ 
    public override string Func1() 
    { 
     return "Class2"; 
    } 

} 
public class Class3 
{ 
    Type type; 
    public Class3(Type type) 
    { 
     this.type = type; 
    } 
    public string UseFunc1() 
    { 
     //I know this wont work but what shuld I do 
     type a = new type(); 
     return a.Func1(); 
    } 
} 
+0

당신은 당신이 지금까지 가지고있는 코드를 제공 할 수 있을까요? –

+0

예제 코드 추가 – Sophex

+0

그럼'Activator.CreateInstance'를 사용할 수는 있지만 factory를 사용하면보다 안전합니다. –

답변

0

나는 무엇을 달성하려고 할 수있는 것은 아래라고 생각합니다. 당신은 추상 클래스를 만들 수는 없지만 하나

public class Class3 
{ 
    AbstractClass abstractMember 

    public Class3(AbstractClass abstractMember) 
    { 
     this.abstractMember = abstractMember; 
    } 

    public string UseFunc1() 
    { 
     return abstractMember.Func1(); 
    } 
} 

를 전달할 수 있습니다 당신은 그것을 좋아 호출 것 :

Class2 c2 = new Class2(); 
Class3 c3 = new Class3(c2); 
+0

유권자들이 그 이유를 떠날 것입니다. – d219