如何在构造函数中从列表返回对象
本文关键字:列表 返回 对象 构造函数 | 更新日期: 2023-09-27 18:02:31
我从一个列表中的数据库中检索了一个静态表。如果有人用一个ID调用该类的构造函数,构造函数会在列表中找到该对象并复制所有值。
public class MyClass
{
public int Id { get; set; }
public string Text { get; set; }
public MyClass(int instanzId)
{
MyClass myClass = CachedList().Find(T => T.Id == instanzId);
Id = myClass.Id;
Text = myClass.Text;
}
}
这将始终创建该对象的新实例。是否可以直接从列表中返回对象?这样的:
public class MyClass
{
public int Id { get; set; }
public string Text { get; set; }
public MyClass(int instanzId)
{
this = CachedList().Find(T => T.Id == instanzId);
}
}
我知道在静态方法中这很容易,但如何在构造函数中做到这一点?
不,不是通过构造函数。你可以通过方法来实现。例如工厂:
public MyClass FindOrCreate(int instanceId)
{
MyClass obj = CachedList().Find(T => T.Id == instanzId);
//create obj when it does not exist
return obj;
}
将缓存封装到另一个轻量级类中:
public class MyWrapClass {
private MyClass m_Cache;
public MyWrapClass() {
m_Cache = CachedList().Find(T => T.Id == instanzId);
...
}
...
// implicit cast to MyClass if you want it
public static implicit operator MyClass(MyWrapClass value) {
if (null == value)
return null;
else
return value.m_Cache;
}
}
...
// Or MyWrapClass test = new MyWrapClass();
MyClass test = new MyWrapClass();