データビルダーのパターンで遊んでいますが、いくつかの動作を理解できていません。私が達成しようとしていることのこの単純化されたバージョンを以下に書きました
public abstract class DataBuilderParent
{
private MyParent myParent;
protected void SetDataBuilder(MyParent myParent)
{
this.myParent = myParent;
}
public DataBuilderParent WithId(int id)
{
myParent.Id = id;
return this;
}
}
public class DataBuilderChild : DataBuilderParent
{
private readonly MyChild myChild = new MyChild();
public DataBuilderChild()
{
base.SetDataBuilder(myChild);
}
public DataBuilderChild WithDescription(string description)
{
myChild.Description = description;
return this;
}
private MyChild Build()
{
return myChild;
}
public static implicit operator MyChild(DataBuilderChild dataBuilder)
{
return dataBuilder.Build();
}
}
public class MyParent
{
public int Id { get; set; }
}
public class MyChild : MyParent
{
public string Description { get; set; }
}
上記のコードの使用法
internal class Program
{
private static void Main(string[] args)
{
MyChild child = new DataBuilderChild().WithDescription("");
}
}
これで子が作成されます。また、インテリセンスは、この新しい DataBuilderChild().WithId(1).WithDescription(""); を実行できることを示しています。ただし、ビルドしようとすると失敗します。このメソッドにアクセスできない理由がわかりません。それは公開されており、インテリセンスによって表示されます。誰かがそれを機能させる方法を説明できますか? ありがとうございました
編集
エラー メッセージは次のとおりです。エラー 1 型 'TestProgram.Program.DataBuilderParent' を 'TestProgram.Program.MyChild' に暗黙的に変換できません C:\Apps\TestProgram\Program.cs 44 29 TestProgram