我想构建一个业务对象,例如员工类,但我知道80%的属性几乎不会被使用。所以我想知道如何使用构造函数中的重要属性创建对象,并且懒惰加载需要它们时使用的大麦(如果有的话)。
我正在使用带有c#的asp.net。
答案 0 :(得分:2)
最明显的做法是,
public Constructor(Object importantPropertyValue)
{
this.ImportantProperty = importantPropertyValue;
}
public Object ImportantProperty{get; private set;}
private Object _unimportantProperty;
public Object UnimportantProperty
{
Get
{
if(_unimportantProperty == null)
{
_unimportantProperty = FetchUnimportantPropertyValue() // how ever you load it
}
return _unimportantProperty;
}
答案 1 :(得分:2)
如果您使用的是纯商务课程,请使用System.Lazy class。
此类(.net v4 minimum)允许您以线程安全的方式将容器的填充推迟到第一次调用:
public class TestLazy
{
private Lazy<MyClass> m_lazyObj;
public MyClass MyClassInstance
{
get { return m_lazyObj.Value; }
}
public TestLazy()
{
m_lazyObj = new Lazy<string>(() => DoTheHeavyJobToGetMyClassInstance);
}
}
如果您正在使用ORM,正如其他人在帖子中所说,延迟加载可能会由ORM引擎提供。
[编辑]:添加了代码示例
答案 2 :(得分:0)
假设您在讨论从数据库延迟加载,那么您可以使用Entity Framework 4.0构建域对象,并免费获得延迟加载。