【发布时间】:2011-08-22 15:15:03
【问题描述】:
我有一个迭代类的字段的方法,将它们的值作为 CSV 返回。我需要一种让类以通用方式访问此方法的方法。
由于某种原因,Statics must derive from object 或者你得到一个编译错误。在这种情况下,从不同的基类派生确实增加了代码的可重用性。还有其他方法可以实现我的目标吗?
我相信我唯一的选择就是让我的静态类成为实例类。
//a data container used for Mocking in inversion of control
public class FieldContainer : ReflectionHelper<FieldContainer>
{
public static string Field1 = "Some Data";
public static string Field2 = "Persons Name";
public static string Field3 = "3030 Plane Ave.";
}
public class ReflectionHelper<T>
{
public static string ToCSV()
{
StringBuilder fieldCollector = new StringBuilder();
Type type = typeof(T);
FieldInfo[] fields = type.GetFields();
foreach (FieldInfo f in fields)
{
fieldCollector.Append(f.GetValue(null) + ",");
}
return fieldCollector.ToString();
}
}
【问题讨论】:
-
你为什么要这样 - 这很臭。
-
@Daniel A. White - 哪个部分有代码味道?反射部分、CSV转换、Field容器……?
-
也许“代码味道”是因为这些类有点不寻常,因为它们的唯一目的是帮助我模拟我的数据库。我在 MVC 中实现 ViewModel,这些 Mock 类有助于使用 Ninject 设置 IoC。我使用字符串和字符串 [] 让我的 ViewModel 保持简单。这些类让我可以定义简单的模型来填充所说的 ViewModel,而无需使用文本数据和通过 XML 强类型构造复杂类型。
标签: c#