2017-11-26 2 views
0

次のクラスがあるとします。,Class2 .... Class1000。 すべてのクラスは、インターフェイスIClassを継承しています。 すべてのクラスは場合の条件を使用せずに、どのように我々は(これらの数字は変動しますので何ロジックは、数字を使用していない)クラス300クラス200の検証をスキップすることができ、コードシナリオベースのクエリ:IF条件を使用しないクラスの検証をスキップ

Validate(IClass class) 
{ 

} 

の下に使用して検証することができますか?

+0

を必要な場所に実装します。 – zaitsman

答えて

2

個人的には、あなたの検証チェックをモデルに移したいと思います。

など。

public interface IClass{ 

    bool ShouldValidate(); 
} 

その後、各クラスに:あなたの検証で次に

public class Class200 
{ 
    public bool ShouldValidate() => false; // because whatever 
} 

public void Validate(IClass class) 
{ 
    if(class.ShouldValidate()) 
    { 
     // do whatever 
    } 
} 

このロジックはIClassインスタンスに属し方法、および拡張して喜んで誰もがこれは正確に知っています例外の実装方法

また、クラス200-300の場合、DRYパターンを持つように常にfalseを返す共通基本クラスから継承できます。

更新もう1つの選択肢は、クラス内にvalidateを直接入れることです。次のようにします。

public interface IClass{ 

    void Validate(); 
} 

次に、メソッドを空のままにして、クラス200〜300にします。

public class Class200 
{ 
    public bool Validate() 
    { 
    } 
} 

とあなたは `検証を()`を呼び出すと `検証は、()`クラス自体に移動することができるかどうかを決定したどのようなコードを示すために必要

public class Class1 
{ 
    public bool Validate() 
    { 
    // do awesome things here 
    } 
} 
+0

あなたのポイントを得ました。しかし、Validateメソッドで条件が使用されていない場合には、方法論を考え出すことができます。 ? – Venkatesan

+0

@Venkatesanそれはあなたが 'Validate'の中で何をするかによって異なります。 – zaitsman

+0

@Venkatesanが私の更新をチェックします。 – zaitsman

関連する問題