为什么 nhibernate 3.3 不允许 ICollection 上的私有 setter?

2024-04-24

我从 nhibernate 3.2 升级到 nhibernate 3.3,并且在我的域类中定义了很多虚拟成员,如下所示:

public virtual ICollection<Movie> Movies { get; private set; }

升级后这停止工作,我得到这个异常:

Following types may not be used as proxies:
ClassName: method set_Movies should be 'public/protected virtual' or 'protected internal virtual'

现在,我设法通过将 setter 更改为 protected 来解决问题,但令我惊讶的是,将 Collection 属性更改为带有支持字段的只读属性也能解决问题。

所以我有两个问题:

  1. 为什么 NHibernate 决定禁止使用私有 setter?它看起来不像 .net 的技术限制,因为它以前受支持,我知道从设计的角度来看不应该这样做,因为我们应该使用 Collection Remove()、Add() 等方法来操作但是为什么要允许受保护的和公共的设置器呢?

  2. 为什么(以及如何)使用带有支持字段的只读属性有效?


NHibernate 将代理生成器集成到它的程序集中,并且(如果我错了,请纠正我)所使用的实现无法处理私有设置器。

但是,如果没有设置器,它会尝试搜索支持字段(因为否则它无法设置它),并且 readonly 是编译时功能,在使用反射时会被忽略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 nhibernate 3.3 不允许 ICollection 上的私有 setter? 的相关文章

  • 如何从当前 .NET 表单/应用程序发送密钥 F12

    我非常确定以下按钮激活的表单代码应该在我的 C 应用程序中引发 Control F12 SendKeys F12 但它似乎并没有继续进入 Windows shell 并激活另一个正在侦听它的程序 我的键盘可以用 看起来发送键在某处被拦截 并
  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • .net 运行时 - Silverlight 运行时 =?

    我用 google 搜索了一下 但没能找到 net CLR 中的哪些类未包含在 CoreCLR 又名 Silverlight 中的详细列表 Windows net Framework 中缺少什么 Silverlight 另外 是否存在 Si
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • Qt中正确的线程方式

    我的图像加载非常耗时 图像很大 并且在加载时也完成了一些操作 我不想阻止应用程序 GUI 我的想法是在另一个线程中加载图像 发出图像已加载的信号 然后用该图像重绘视图 我的做法 void Window loadImage ImageLoad
  • 如何避免选择项目时 winforms 树视图图标发生变化

    我正在一个小型 C Winforms 应用程序中尝试树视图 我已经以编程方式将 ImageList 分配给树视图 并且所有节点都很好地显示了它们的图标 but当我单击一个节点时 它的图标会发生变化 变为 ImageList 中的第一个图像
  • CMake - 将预构建库链接到 C# 项目

    我正在使用 CMake 构建 C 库 该库依赖于已构建的库 dll 我似乎无法让图书馆链接到我的图书馆 我尝试过使用target link libraries mylib external lib 我也尝试过暴力破解 reference e
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • 在 C# 中赋值后如何保留有关对象的信息?

    我一直在问我的想法可能是解决方案 https stackoverflow com questions 35254467 is it possible in c sharp to get the attributes attached to
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • C++0x 中的新 unicode 字符

    我正在构建一个 API 它允许我获取各种编码的字符串 包括 utf8 utf16 utf32 和 wchar t 根据操作系统 可能是 utf32 或 utf16 新的 C 标准引入了新类型char16 t and char32 t没有这么
  • 最后从同一类中的其他构造函数调用构造函数

    我在这里读到可以调用另一个构造函数从同一类中的另一个构造函数调用构造函数 https stackoverflow com questions 829870 calling constructor from other constructor

随机推荐

  • iOS 上 OpenGL ES2.0 中的多纹理点精灵?

    我正在尝试使用 OpenGL ES 2 0 为 iPhone 应用程序制作多纹理点精灵 我在网上找不到任何这样的例子 而且它似乎不起作用 当对点精灵使用 GL POINTS 模式时 是否有一些内置限制使得 gl PointCoord 不能在
  • ggplot2:更改条形图上堆栈的顺序

    我正在尝试使用facet wrap制作堆叠条形图 但我希望翻转堆叠变量 开发 的顺序 我已经重新排序了这些因素 并尝试了 order descend 以及 scale fill manual 但似乎没有任何效果 这是我的代码 develop
  • C# Process.MainWindowHandle 始终返回 IntPtr 零

    这是我的代码 using Process game Process Start new ProcessStartInfo FileName DatabaseCheck exe RedirectStandardOutput true Crea
  • ListView Viewholder 复选框状态

    我的 ListView 自定义适配器 及其新实现的 viewHolder 有一些问题 我有一个 ListView 其中每个项目都有一个复选框 这里没有什么新内容 问题是 如果我的列表中有超过 9 个项目 当我选中第一个复选框时 第十个将被自
  • 在所有列上 apply() 自定义函数提高效率

    我应用这个功能 def calculate recency for one column column pd Series gt int Returns the inverse position of the last non zero v
  • 如何让Visual Studio推荐unity代码

    我一直在学习 C 和 Unity 但我遇到的一个问题是 在 Visual Studio 上编写 C 脚本时 VS 似乎总是推荐对 Unity 无用的脚本 一个例子是当我输入Vector3 它会推荐BitVector32 你不能忽略它们 就好
  • CngKeyBlobFormat 支持的实际格式是什么?

    Microsoft 页面提供了有关可使用的格式的 最少 信息CngKey 导入 https msdn microsoft com en us library bb344680 v vs 110 aspx Which actual格式实际上由
  • 创建透明渐变并将其用作 SpriteKit 中的 alpha 遮罩

    我正在尝试制作渐变并将其用作 alpha 蒙版 现在 我能够制作与此类似的图像 从黑色到透明 这是我用来实现这一切的代码 private func createImage width CGFloat height CGFloat gt CG
  • cin.get() 是非阻塞的

    我有与链接问题中提到的相同的问题 控制台窗口 在 VS 2010 中 在运行程序后立即消失 我使用 cin get 在主函数的末尾 但问题仍然存在 对可能的原因有什么想法吗 您可以查看main中的代码 int main const int
  • 如何动态地将新选项卡添加到红色选项卡面板中

    假设您有一个像这样的选项卡面板 editor layout below t tab panel 350x350 tab 1 below b button 75x25 Interpret on click do a text a area 3
  • 基于一个键将数据从 df 复制到多列中的另一个 df

    我有两个数据框 df1 和 df2 每个数据帧的唯一标识符是 ID 和 Prop Number 我需要将 df1 中的 Num1 2 和 3 列复制到 df2 1 Num 中的相应列 但我不确定如何对多个列进行合并 我想将 df2 保留为
  • 绝对中心流体div

    再会 我知道如果你想将 div 绝对居中 你可以这样做 div div blahblah div div CSS parent width 500px height 500px position absolute or relative t
  • Cordova DeviceReady 未触发

    这几天我一直在为这个问题苦苦思索 在尝试创建新的 FileTransfer 对象时出现许多 对象未定义 错误后 看起来问题更加基本 不知何故 DeviceReady 事件没有触发 Stack Overflow 在这个问题上有很多点击 但其中
  • 使用 nHibernate 序列化 DetachedCriteria

    我正在尝试序列化 DetachedCriteria 以便可以将其保存在数据库中并在以后重用相同的条件 当我运行下面的代码时 我得到 NHibernate Criterion DetachedCriteria 无法序列化 因为它没有无参数构造
  • Wagtail / Hallo.js - 添加插件但修改的内容未保存

    我正在 Wagtail 1 3 1 Django 1 7 11 上运行 我已经激活了 Hallohtml 和 Hallojustify 插件 它们出现在工具栏中 没有图标 但有按钮 可以使用按钮 并且可以在文本区域中看到修改 我的意思是 例
  • 如何使以下 readAsDataURL 返回多个 readAsDataURL?

    此函数读取从输入字段获取的文件并返回其 dataUrls readAsDataURL target target gt
  • 无法使用 Spring 的 WebServiceTemplate 将 Http 标头添加到消息中

    我有一个相当简单的情况 我尝试将 HTTP 标头 不是 SOAP 标头 添加到我使用 Spring 发出的请求中WebServiceTemplate 我定义了一个ClientInterceptor我在哪里做 Override public
  • Numpy 中如何获得向量的大小?

    为了与 只有一种明显的方法可以做到这一点 保持一致 如何在 Numpy 中获取向量 一维数组 的大小 def mag x return math sqrt sum i 2 for i in x 上面的方法有效 但是我无法相信我必须自己指定这
  • Android JNI异常处理

    我需要在 JNI 代码中实现异常处理 我不擅长 jni 找不到任何好的例子 因此 请提供完整的示例 这就是我正在做的 jint JNI OnLoad JavaVM vm void reserved jint result 1 g JavaV
  • 为什么 nhibernate 3.3 不允许 ICollection 上的私有 setter?

    我从 nhibernate 3 2 升级到 nhibernate 3 3 并且在我的域类中定义了很多虚拟成员 如下所示 public virtual ICollection