【发布时间】:2024-04-13 19:30:02
【问题描述】:
我正在尝试通过将实体的属性标记为虚拟来支持我的实体的 NHibernate 代理:
public class Video : IAbstractDomainEntity<string>
{
public virtual string Id { get; set; }
public virtual string Title { get; set; }
public virtual int Duration { get; set; }
public virtual string Author { get; set; }
public virtual bool HighDefinition { get; set; }
public Video()
{
Id = string.Empty;
Title = string.Empty;
Author = string.Empty;
}
}
ReSharper 指出,由于此处描述的问题,这是一种不好的做法:Virtual member call in a constructor
我理解这个问题,我也明白我不能将我的类标记为密封,因为这样 NHibernate 将无法从实体生成代理。
我是否只是忍受衰落并确保不要对我的二传手做任何奇怪的事情?
【问题讨论】:
-
我想说,改变实现以避免这种情况。例如。不要使用 auto 属性(但使用 Resharper 快速将其转换为带有支持字段的属性)并在那里设置默认值。构造函数中的虚拟属性以后可能会简单地导致意外行为
标签: c# nhibernate virtual