別のオブジェクトのデータを使用してカスタム オブジェクトを構築するための提案や代替パターンがあるかどうかを知りたいです。
現在、3 つのアプローチを検討しています。
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"]);
}
}
主な考慮事項の 1 つは、どのアプローチを使用する場合でも、クラスへのusing
参照を追加する必要があるということです。System.Data
現時点では、この依存関係をMyObject
クラスに直接追加することをためらっています。
これらのアプローチのいずれかに長所または短所を提供したり、拡張性とテスト容易性をより有効にする代替手段を提供したりできる人はいますか?