2012-03-22 9 views
0

戻り値の型がIEnumerable<T>のいくつかのメソッドがあります。これらのメソッドは、DomainServiceクラスの一部であり、クライアント上で、彼らはこれらのメソッドを呼び出すときに、コールバックのコードは基本的に同じDRY(リファクタリング)コールバックを使用するこのコードですか?

どう
void SomeMethodA(string someString, Action<ResultsArgs<string>> operationCompleted) 
{ 
    MyContext.MethodA(someString, c => 
     { 
      // same code (operationCompleted parameter is used) 
     }, null); 
} 

void SomeMethodA(Action<ResultsArgs<string>> operationCompleted) 
{ 
    MyContext.MethodB(c => 
     { 
      // same code (operationCompleted parameter is used) 
     }, null); 
} 

あるInvokeOperation<T>

public InvokeOperation<IEnumerable<T>> MethodA(string prm, Action<InvokeOperation<IEnumerable<T>>> 

public InvokeOperation<IEnumerable<T>> MethodB(Action<InvokeOperation<IEnumerable<T>>> 

の戻り値の型で生成され、これをリファクタリングしてコードが重複しないようにすることはできますか?

答えて

1

CとoperationCompletedを取る方法を作る....

その後、

MyContext.MethodA(someString, c => MyShinyNewMethod(c, operationCompleted), null); 
0

私はあなただけのパラメータとしてInvokeOperation<IEnumerable<T>>Action<ResultsArgs<string>>を取る方法を抽出することができると思います。そしてc => { }のメソッドを呼び出します。

void SomeMethodA(string someString, Action<ResultsArgs<string>> operationCompleted) 
{ 
    MyContext.MethodA(someString, c => 
     { 
      NewMethod(c, operationCompleted); 
     }, null); 
} 

void SomeMethodA(string someString, Action<ResultsArgs<string>> operationCompleted) 
{ 
    MyContext.MethodB(c => 
     { 
      NewMethod(c, operationCompleted); 
     }, null); 
} 
関連する問題