如何在构造函数中从列表返回对象

时间:2015-07-14 12:08:00

标签: c# .net oop

我从列表中的数据库中检索了一个静态表。 如果有人使用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);
    }
}

我知道静态方法很容易,但是如何在构造函数中完成呢?

2 个答案:

答案 0 :(得分:5)

嗯不,不是通过构造函数。你可以通过一种方法来做到这一点。例如工厂:

public MyClass FindOrCreate(int instanceId)
{
    MyClass obj = CachedList().Find(T => T.Id == instanzId);
    //create obj when it does not exist

    return obj;
}

答案 1 :(得分:2)

将缓存包装到另一个轻量级类中:

Tables (They essentially have the same fields with a few different ones) :

Table 1 : {id, user_id, score}
Table 2 : {id, user_id, score}
Table 3 : {id, user_id, score}

users : {id, name, overall_score}