2016-09-12 4 views
0

私は私のClassLibraryにオプションのパラメータを追加してい追加オプションのパラメータBackWord互換

public static string GetData(string name, string surname, bool status = false){} 

を提供せず、私のASPXページが

GetData(string name, string surname) 

私はちょうど再構築方法呼びかけていますClassLibraryとASPページではありません。それからそれはエラーを投げた方法が見つかりません

助けを借りてください 下位互換性を維持する方法?つまり、classlibraryだけをレプリケートすると、ASPページに影響しないはずです。私は、.NETバージョン4

を使用してミリアンペアあなたが本当にバイナリ互換性は[はい、あなたも、オプションのパラメータを追加することができない場合、あなたに

+2

オプションパラメータを使用するのではなく、追加パラメータで過負荷を作成します。 – Joe

+1

この質問は、これがうまくいかない理由についての回答があります:http://stackoverflow.com/questions/7516256/is-using-optional-parameters-for-backwards-compatibility-a-good-idea?rq=1 – AsheraH

+0

@AsheraH:私は上記のコメントを読んだが、それが問題を起こす理由と克服する方法を得られなかった – Akshay

答えて

1

ありがとうございます。何でき過負荷に追加された操作を行います。

前:

public static string GetData(string name, string surname) 
{ 
    // Real code 
} 

後:

public static string GetData(string name, string surname) 
{ 
    return GetData(name, surname, false); 
} 

public static string GetData(string name, string surname, bool status) 
{ 
    // Real code 
} 

(注)statusをオプションにできますが、多くはそこではないでしょう引数を与えない呼び出し元は2つのパラメータのバージョンを呼び出すことになります。しかし、複数のパラメータを追加していた場合は、もっと意味があります。

あなたは「互換性を再構築する」ことができるかどうか、つまり「再構築すればすべてが問題ありません」と考えてもよいでしょう。下位互換性が厳しく制限されている可能性があります。最近では、ビルドされたアプリケーションに新しいバイナリをドロップすることは、ビルド時に新しいパッケージのバージョンを取得する場合に比べて比較的稀です。

関連する問題