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;
}
}