パラメータとして渡されたデリゲート メソッドを呼び出す必要がありますが、このパラメータはオプションであるため、「宛先」クラスに実装されているメソッドにデフォルト値を設定したいと考えています。
これは、ほぼ期待どおりに機能する例です。
public class AgeCalculator
{
public void SetAge(Client client, Func<int, int> getAge = default(Func<int, int>))
{
client.Age = getAge != default(Func<int, int>) ? getAge(client.Id) : this.getAge(client.Id);
}
private int getAge(int clientId) {
return 10;
}
}
その後..
class Program
{
static void Main(string[] args)
{
AgeCalculator calculator = new AgeCalculator();
Client cli1 = new Client(1, "theOne");
calculator.SetAge(cli1);//Sets 10
calculator.SetAge(cli1, getAge);//Sets 5
}
private static int getAge(int clientId) {
return 5;
}
}
今の質問; デリゲート値について尋ねないようにするために設定する必要があるデフォルト値は何ですか?
「public void SetAge(Client client, Func getAge = this.getAge)」を試してみましたが、うまくいきませんでした。
AgeCalculator.getAge に必要なタグまたは別の定義はありますか?動的メソッドを使用する必要がありますか?
前もって感謝します。
注:実際のシナリオには、TDD 指向のプロジェクトのより複雑なロジックが含まれます。これは、状況を要約するためのサンプルです。