我一直在阅读WPF的在线教程,在那里我读了一行 “WPF中的所有类都具有无参数构造函数,并过度使用属性。这样做是为了使其非常适合XAML等XML语言。”
我通过创建一个带有一个参数化构造函数的自定义类来检查上面的单词并遇到错误“Type'custom_class_name'不能用作对象元素,因为它不是公共的,或者没有定义公共无参数构造函数或类型转换器。”
我只是想知道具体的详细原因,无参数构造函数如何帮助实现这一目标。
答案 0 :(得分:6)
WPF框架使用无参数构造函数来实例化我们在构建可视树时在XAML页面中定义的所有对象。如果它试图实例化一个没有公共参数构造函数的对象,那么你将抛出这个Exception
。如果您要向对象添加无参数构造函数并重试,则此Exception
应消失。
请同时查看MSDN上的Type '{0}' is not usable as an object element页面。
另外,我相信默认情况下,.NET中没有任何构造函数的类会自动提供'invisible'无参数构造函数。但是,如果我们添加一个参数化构造函数,那么将不会自动提供无参数构造函数。