EF Core 如何访问私有支持字段?

问题描述 投票:0回答:1

我一直在使用支持字段来更好地保护实体的某些属性的值,如https://learn.microsoft.com/en-us/ef/core/modeling/backing-field

中所述

Microsoft 提供了以下示例,这就是我实现支持字段的方式:

public class Blog
{
    private string _validatedUrl;

    public int BlogId { get; set; }

    [BackingField(nameof(_validatedUrl))]
    public string Url
    {
        get { return _validatedUrl; }
    }
}

摘自文章:

默认情况下,EF 将始终读取和写入支持字段

当我很高兴地使用这个约定时,我开始想知道:EF Core 如何访问私有支持字段?

c# entity-framework oop entity-framework-core
1个回答
0
投票

它几乎肯定使用了反射。以下是其工作原理的示例:

var instance = Activator.CreateInstance(typeof(Blog));
var field = typeof(Blog).GetField(
    "_validatedUrl",
    BindingFlags.NonPublic | BindingFlags.Instance);
field.SetValue(instance, "http://example.com/");

instance
对象的
_validatedUrl
字段现在具有值
"http://example.com/"

© www.soinside.com 2019 - 2024. All rights reserved.