【发布时间】:2010-10-20 04:43:22
【问题描述】:
我一直在研究使用 LINQ 表达式的静态反射 - 非常酷!
我有一个想法 - 一个类是否可以基于对另一个类进行的静态反射在一个类上“生成”字段?我特别想到了我在这里多次看到的 Builder 模式。我想做一个 fluent-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;
}
}
}
这确实有效,并且列出了相同的属性 # 次,但感觉更冗长且不够灵活。看来我应该可以在这里做一些匿名类型的事情?
【问题讨论】:
标签: c# reflection static-reflection