我很想知道是否有人对从另一个对象中获取数据构建自定义对象有任何建议或替代模式。
我们目前正在探索三种方法。
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) Builder Class
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) Extension Method
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"]);
}
}
一个主要的考虑因素是,无论我们选择哪种方法,我们都需要向类添加System.Data
的using
引用。此时,我们不愿直接向MyObject
类添加这个依赖项。
有人可以提供任何一种方法的优缺点,或者提供更好地支持可扩展性和可测试性的替代方案吗?