私は LINQ 式を使用した静的リフレクションについて勉強してきました - とてもクールです!
私が持っていた1つの考え-あるクラスが、別のクラスで行われた静的リフレクションに基づいて、あるクラスでフィールドを「生成」することは可能ですか? ここで何度も見た Builder パターンを具体的に考えています。構築したいクラスに一致するビルダーのフィールドを「生成」する流暢な nhibernate スタイルのプロパティ登録を行いたいと思います。このようなもの:
public class Color
{
private Color()
{
}
public string Name { get; private set; }
public class Builder : BuilderBase<Color>
{
public Builder()
{
Property(x => x.Name);
}
public Build()
{
return built_up_color;
}
}
}
次のようなコンストラクター構文をサポートします。
Color c = new Color.Builder() { Name = "Red" }.Build();
これらすべてのポイントは、Color のプロパティの定義を繰り返さなければならない回数を減らすことです。私はこれで遊んだ:
public class Color
{
private Color()
{
}
public string Name { get; private set; }
public class Builder
{
private Color _color = new Color();
public string Name
{
get { return _color.Name; }
set { _color.Name = value; }
}
public Build()
{
return _color;
}
}
}
これは確かに機能し、プロパティを同じ回数リストしますが、冗長で柔軟性が低く感じます。ここで匿名型の何かをすることができるはずですか?