C# 避免从对象内部返回对象

C# 避免从对象内部返回对象,c#,C#,我有一个像这样的对象: 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 My

我有一个像这样的对象:

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>;
    }
}
当我需要实例化另一个相同类型的对象来填充初始对象时,如何消除这种冗余


感谢您的建议。

使
从数据库()加载对象
成为一个
静态
方法,该方法返回一个新的
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
{
public int UserID{get;set;}
公共列表{get;set;}

public List任何关于静态方法的方法,我都试图避免。@frenchie-当然有一些选项,尽管这是最好的方法。为什么要避免它?我想避免创建两个对象:一个是我实例化以使用的对象,另一个是我从内部实例化以执行数据库调用的对象。@frenchie-这就是为什么要将其设置为static。那么您只有一个对象。@frenchie这正好可以做到。关键是您使用静态方法而不是显式构造对象。您甚至可以将构造函数设为私有(如果您总是从db填充它)。
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;
    }
}