2017-11-28 1 views
0

私は同じメソッドを持ちますが異なる名前を持つ2つのAPIを持っています。抽象クラスをパラメータとして使用し、そのクラスの新しいアイテムを作成する

私は、この両方から継承した抽象クラスを作成しました。

これらのAPIを使用する別のクラスを作成しようとしていますが、どのAPIを使用するか気にしたくありません。

抽象クラスをパラメータとして渡して、APIの1つとして使用するにはどうすればよいですか?

良い方法がありますか?

コード例:

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'を使うことができましたが、ファクトリーを持つことはより安全です。 –

答えて

0

私はあなたが達成しようとするかもしれませんが、以下にあるものだと思います。あなたは抽象クラスを作成することはできませんが、あなたが1

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

関連する問題