1

次のようなオブジェクトがあります。

public class MyObject
{
    public int UserID {get;set;}
    public List<SomeObjects> {get;set;}
    public List<SomeOtherObjects {get;set}
    public MyObject TheObjectForDB {get;set} //HERE: creating a new object

    public MyObject(int TheUserID)
    {
        this.UserID = TheUserID;
    }

    public LoadTheObjectFromDatabase()
    {
        MyQueries TheQueries = new MyQueries();
        TheObjectForDB = TheQueries.LoadFromDB(UserID) //HERE: object for DB work

        this.List<SomeObjects> = TheObjectForDB.List<SomeObjects>;
        this.List<SomeOtherObjects> = TheObjectForDB.List<SomeOtherObjects>;
    }
}

データベース クエリは、基本的に同じオブジェクト タイプを返します。

LoadFromDB = from...
             select new MyObject(TheUserID){...}

同じタイプの別のオブジェクトをインスタンス化して初期オブジェクトを設定する必要がある場合、この冗長性をどのように取り除くことができますか?

ご提案いただきありがとうございます。

4

1 に答える 1

3

newをLoadTheObjectFromDatabase()返すstaticメソッドを作成しますMyObject

public class MyObject
{
    public int UserID {get;set;}
    public List<SomeObjects> {get;set;}
    public List<SomeOtherObjects {get;set}

    public MyObject(int TheUserID)
    {
        this.UserID = TheUserID;
    }

    public static MyObject LoadTheObjectFromDatabase(int userid)
    {
        MyQueries TheQueries = new MyQueries();
        MyObject TheObjectForDB = TheQueries.LoadFromDB(userid) //HERE: object for DB work

        return TheObjectForDB;
    }
}

次に、 を実行する代わりに、次のMyObject newObj = new MyObject(); newObj.LoadTheObjectFromDatabase();ようにしますMyObject newObj = MyObject.LoadTheObjectFromDatabase();

于 2012-10-17T17:06:17.447 に答える