具体的な例として、次のクラスを使用して、新しいIDocumentオブジェクトを段階的に作成したいと思います。結果のオブジェクトが最後に完全なクラスを表すIDocumentである限り、任意のオブジェクトから開始して、任意の中間オブジェクトを使用できます。
ステップ1:MyNamespaceという名前の新しい名前空間を追加します。現在のオブジェクトを印刷すると、この時点で次のようになります。
namespace MyNamespace
{
}
ステップ2:MyClassという名前空間に新しいクラスを追加します。現在のオブジェクトを印刷すると、この時点で次のようになります。
namespace MyNamespace
{
public class MyClass
{
}
}
ステップ3:MyMethodという新しいメソッドをこのクラスに追加します。現在のオブジェクトを印刷すると、この時点で次のようになります。
namespace MyNamespace
{
public class MyClass
{
public void MyMethod()
{
}
}
}
私がこれに関して抱えている問題は、理論的にこれを実行できる方法が無数にあるように思われるか、少なくとも誤ってこれを実行できると結論付けていることです。WithChanges、UpdateDocument、さまざまなSyntaxオブジェクトのメソッド、ParseCompilationUnitなど、あらゆる種類の異なるオブジェクトの無限のメソッドとコンストラクター。
基本的に、これを段階的に構築し、各ステップで個別のオブジェクトを作成して、たとえばコンソールに出力できるようにします。このすべてを1行で作成する1つの大きなステートメントではありません。6月のCTPリリースに付属するすべてのドキュメントを何度か読みましたが、前述したように、さまざまなコンストラクターとメソッドの無限の組み合わせに迷いました。また、パフォーマンスも考慮した方法に興味があります。