由于某种原因,我不想让用户创建对象的实例,而不发送属性到构造函数 ,但因为我知道该对象应该有默认的构造函数,所以它可以创建一个实例与发送requierd属性。 有什么办法可以防止这个问题?如果是,是否有副作用?对于nhibernate来说,默认构造函数是否真的需要持久化一个对象?
回答
只需使用一个受保护的默认构造函数:
public class Product
{
protected Product() { }
public Product(Category category)
{
this.Category = category;
}
}
“NHibernate允许值对象的私有默认构造函数,但对于实体,您将需要默认的公共或受保护的构造函数,因为私有是不够的。”
在这里你能找到的东西:
这里有一个实验,而不必构造工作:
http://kozmic.net/2011/03/20/working-with-nhibernate-without-default-constructors/
这与依赖注入工作的例子:
http://nhibernate.info/blog/2008/12/12/entities-behavior-injection.html
我只是用乌尔建议,但这个错误将提高:Castle.DynamicProxy.DefaultProxyBuilder“同时存在于” D:\ WebProjects \ Azarakhsh.Web \第三方\城堡。 Core.dll'和'd:\ WebProjects \ Azarakhsh.Web \ ThirdParty \ Castle.DynamicProxy2.dll – Adrakadabra 2011-06-01 05:00:58
我认为你必须发布你的代码! – danyolgiax 2011-06-03 04:25:12
我完全使用http://devlicio.us/blogs/krzysztof_kozmic/archive/2011/03/20/working-with-nhibernate-without-default-constructors.aspx ,,我不知道是否因为城堡dll? – Adrakadabra 2011-06-06 03:48:49
- 1. 构造一个通用对象(不是默认构造函数)
- 2. 对于复制构造函数来说Const是否重要?
- 3. MVVM - 视图是否真的需要一个默认构造函数?
- 4. 内部类的默认构造函数是否需要外部类的对象?
- 5. Java Google App Engine:在将对象添加到另一个持久对象的持久数据结构之前,是否需要使对象持久化?
- 6. 有一个默认的构造函数创建一个对象
- 7. JPA:是否需要为空的默认构造函数?
- 8. 当创建一个重载构造函数时,是否需要一个默认构造函数?
- 9. 构造一个默认的数据对象,用于更改
- 10. Spring注释控制器是否需要默认构造函数
- 11. 正在初始化shared_ptr的,当对象需要一个默认的构造函数
- 12. CDI我需要生产者的对象与默认的构造函数?
- 13. C++默认构造函数,用新对象初始化指针
- 14. 为什么JAX-WS导出的对象需要默认构造函数?
- 15. C++是否需要在默认构造函数中初始化stl字段?
- 16. 我们什么时候需要一个默认构造函数?
- 17. 为什么BroadcastReceiver需要一个默认构造函数?
- 18. 为什么匿名对象有时需要默认构造函数?
- 19. 当在php类中定义一个对象时,是否可以使用默认构造函数创建对象?
- 20. 为什么我能够默认构造一个没有默认构造函数的对象?
- 21. 如何定义一个创建前一个对象的默认构造函数
- 22. 是否工厂模式创建对象只能用默认的构造函数
- 23. 复制构造函数调用默认构造函数以创建对象
- 24. 如果我在默认构造函数中放置一个参数,但给参数一个默认值,它是否仍然是一个默认构造函数?
- 25. 派生类是否总是需要调用默认的基础构造函数?
- 26. 新构造的对象作为默认模板函数参数
- 27. 方法本地结构是否需要执行默认构造函数
- 28. 是否有默认的默认构造函数?
- 29. 干涸的对象/类的默认构造函数样板
- 30. 构造函数是否返回一个对象?
但我认为它不会对其保护级别的nhibernate访问?我不是吗? – Adrakadabra 2011-06-01 04:09:47
即使受保护,NHibernate仍然可以访问它。这也适用于属性。 – 2011-06-01 08:48:14
您可以将[Obsolete]保护添加到nullary构造函数中,以确保手写代码不会使用它。这实际上与私人相同。 – 2013-03-07 10:31:18