私はBaseClassを拡張するクラスDerivedClassを持っています。 BaseClassの2人の代表者との文字列ように見えます取るコンストラクタがあります。DerivedClassで派生クラスのコンストラクタで基本クラスのコンストラクタに渡す代理人を作成する
public BaseClass(Func<string, bool> stringToBool, Func<string, string> stringToString)
{
...
}
を、私はシンプルで、「デフォルト」で働く代表者に渡して、基本コンストラクタを呼び出しデフォルトコンストラクタを持つようにしたいです方法、例えばstringToBoolは常にfalseを返します。またはstringToStringは、渡された文字列を常に返します。どうすればこれを達成できますか?
public class BaseClass {
public BaseClass(
Func<string, bool> stringToBool = null,
Func<string, string> stringToString = null
){
stringToBool = stringToBool ?? DefaultStringToBool;
stringToString = stringToString ?? DefaultStringToString;
}
private static bool DefaultStringToBool(string s) {
<Insert default logic here>;
}
private static string DefaultStringToString(string s) {
<Insert default logic here>;
}
}
その後、あなたもしない限り、すべてのコンストラクタベースのものに触れる必要はありません。私は、これはあなたが実際にそれから欲しいものであると考えているフレーズ「デフォルトの方法」のご利用に基づき
あなたはちょうど言った。あなたは構文を求めていますか? – Blorgbeard
私が欲しいものを行うDerivedClassのメソッドを作成し、そのコンストラクタのメソッドを渡す必要がありますか?または、コンストラクタ自体に関数を作成する方法はありますか? –
確かに、 'base(t => false、t => t)'のような単純なものはうまくいくと思います。 – Blorgbeard