小编Pre*_*n S的帖子

Json.Net在列表反序列化期间调用属性getter,导致重复项

我正在使用json.net来实现winform应用程序的memento模式.我正在使用memento在失败的数据库事务上回滚对象.我得到的问题是,当反序列化纪念品时,调用getter而不是setter.让我来证明:

class MyClass
{
    public int ID { get; set; }
    public string field1 { get; set; }
    public string field2 { get; set; }

    private List<SomeObject> _someObjects;
    public List<SomeObject> SomeObjects
    {
        get
        {
            if(_someObjects == null)
            {
                _someObjects = LoadSomeObjectsFromDB();
            }
            return _someObjects;
        }
        set
        {
            _someObjects = value;
        }
    }

    private List<AnotherObject> _anotherObjects;
    public List<AnotherObject> AnotherObjects
    {
        get
        {
            if(_anotherObjects == null)
            {
                _anotherObjects= LoadAnotherObjectsFromDB();
            }
            return _anotherObjects ;
        }
        set
        {
            _anotherObjects = value;
        } …
Run Code Online (Sandbox Code Playgroud)

c# json.net winforms json-deserialization

8
推荐指数
1
解决办法
3039
查看次数

MySQL:您的 SQL 语法错误 | 限制 0, 25

我不明白这个错误,请大家帮助我。为什么我收到此错误..我的查询有问题吗?

这是错误..

#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 7 行“LIMIT 0, 25”附近使用的正确语法

这是我的查询:

SELECT
    equivalent
FROM
    tb_student_record
INNER JOIN
    tb_student ON tb_student_record.stud_id = tb_student.stud_id 
WHERE
    tb_student_record.instructor_id = 'INST-20131296' 
    AND tb_student_record.criteria_id = '1' 
    AND tb_student_record.class_record_id = '1' 
    AND (CONCAT(stud_fname, ' ', stud_lname) = 'Jeffrey Oliveras' 
    AND tb_student_record.term = 'Prelim'
Run Code Online (Sandbox Code Playgroud)

mysql

4
推荐指数
1
解决办法
4万
查看次数

调用延迟加载的最有效方法

正如标题所述,我想知道调用延迟加载的对象属性的最有效方法.考虑以下类定义:

Class MyObject
{
    private _stringList = null;
    public List<string> StringList
    {
        set
        {
            _stringList = value;
        }
        get
        {
            if(_stringList == null)
            {
                _stringList = new List<string>();
                //fill the List with strings from some data source
            }
            return _stringList;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想用最昂贵的操作预加载StringList,那会是什么?

MyObject obj = new MyObject();
obj.StringList.ToString(); //?
obj.StringList.Count(); //?
obj.StringList.Equals(null); //?
Run Code Online (Sandbox Code Playgroud)

关于什么:

if(obj.StringList == null){}
Run Code Online (Sandbox Code Playgroud)

我不喜欢这种方法但看起来它比在属性上调用方法要便宜.

我正在寻找一个特定于List的答案以及一个通用的答案object.

编辑:我知道这被认为是微优化,但这不是问题的关键.我不是在问你是否喜欢我在这里做的事情.我想知道相对于CPU和/或内存使用情况这样做的最佳方法,以及一些证据表明建议的方法实际上比其他方法更好.

.net c# lazy-loading

0
推荐指数
2
解决办法
675
查看次数