他のオブジェクトからのデータでカスタムオブジェクトを構築するための提案や代替パターンがある人はいらっしゃいますか。オブジェクト - 静的ビルダーメソッドとビルダークラスと拡張メソッドのビルド
現在、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つは、今まで接近してきたことですが、System.Data
のusing
という参照をクラスに追加する必要があることです。この時点で、この依存関係を直接MyObject
クラスに追加することを躊躇しています。
これらのアプローチのいずれにもメリットとデメリットがありますか、あるいは拡張性とテスト容易性を向上させる代替手段を提供する人はいますか?