2016-06-29 6 views
0

こんにちは私は、インターフェイスメソッドを持つために過度な方法がないかどうか疑問に思っていました。それは、例えば3つの異なるモデルを取り込むことができますか?インタフェースメソッドが異なるクラスC#を受け入れることは可能ですか?

public interface IOperations 
    { 
     void AddTranslation(TranslationLocationEnum Location, T model)    
    } 

public class ApplicationOne : IOperations 
    { 
     public void AddTranslation(TranslationLocationEnum Location, ClassType1 model)  
    } 

public class ApplicationTwo : IOperations 
    { 
     public void AddTranslation(TranslationLocationEnum Location, ClassType2 model)  
    } 

+1

これを一般的にすることができます( 'IOperations ')が、それを使って問題を起こすことができます。そのインターフェイスはどのように使用されるのですか? –

答えて

3
public interface IOperations<T> where T : class 
{ 
    void AddTranslation(TranslationLocationEnum Location, T model); 
} 

public class ApplicationOne : IOperations<ApplicationOne> 
{ 
    public void AddTranslation(TranslationLocationEnum Location, ApplicationOne model) 
    { 
     throw new NotImplementedException(); 
    } 
} 

public class ApplicationTwo : IOperations<ApplicationTwo> 
{ 
    public void AddTranslation(TranslationLocationEnum Location, ApplicationTwo model) 
    { 
     throw new NotImplementedException(); 
    } 
} 

使用するインターフェイスを継承時の汎用インタフェースや通過型ありがとう:私はこのような何かを探しています。お役に立てれば。

+1

それは 'public class ApplicationOne:IOperations 'です。 –

+0

@JeppeStigNielsenはい、どんなクラスでも渡すことができます。私は例を挙げました。 –

+0

これはうまくいくはずですが、複数のタイプのモデルを渡す必要がある場合はどうでしょうか。 私はAddTranslationApplication1、AddTranslationApplication2クラスを持ち、EditTranslationApp1、EditTranslationApp2クラスも持っています。 もし私がこの解決策に踏み込むなら、私はすべての操作のためのインターフェースを自分で理解しなければならないということを意味します。私はちょうど3x3の異なるクラスを受け入れるadd/edit/readオペレーションを持つインターフェイスを持っていたいと思います(そして、私はこれをやりたくありません:T:class、Z:classなど) –

関連する問題