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