我很想知道是否有人对使用来自另一个对象的数据构建自定义对象有任何建议或替代模式。
我们目前正在探索三种方法。
1) 静态构建方法
public class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
public static MyObject Build(DataRow data)
{
MyObject newObject = new MyObject();
newObject.Id = Convert.ToInt32(data["ID"]);
newObject.Name = Convert.ToString(data["NAME"]);
return newOjbect;
}
}
2) 生成器类
public class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
}
public class MyObjectBuilder
{
public static MyObject Build(DataRow data)
{
MyObject newObject = new MyObject();
newObject.Id = Convert.ToInt32(data["ID"]);
newObject.Name = Convert.ToString(data["NAME"]);
return newOjbect;
}
}
3) 扩展方法
public class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
}
public static class MyObjectExtensions
{
public static void Build(this MyObject obj, DataRow data)
{
obj.Id = Convert.ToInt32(data["ID"]);
obj.Name = Convert.ToString(data["NAME"]);
}
}
一个主要考虑因素是,无论我们采用哪种方法,都需要添加对类的using
引用System.Data
。在这一点上,我们犹豫是否将这个依赖直接添加到我们的MyObject
类中。
任何人都可以为这些方法中的任何一种提供优点或缺点,或者提供可以更好地实现可扩展性和可测试性的替代方案吗?