Я изучал статическое отражение с помощью выражений LINQ - очень круто!
Одна мысль, которая у меня возникла - возможно ли, чтобы один класс «генерировал» поля в одном классе на основе статического отражения, сделанного в другом классе? Я имею в виду именно образец Строителя, который видел здесь много раз. Я хотел бы сделать регистрацию свойств в стиле беглого 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();
Смысл всего этого в том, чтобы уменьшить количество раз, которое я должен повторять, определяя свойства цвета. Я играл с этим:
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;
}
}
}
, который, безусловно, работает И перечисляет свойства столько же раз, но кажется более смелым и менее гибким. Похоже, я должен быть в состоянии сделать что-то анонимно-типа-у здесь?