在类型上找不到匹配的构造函数
本文关键字:构造函数 找不到 类型 | 更新日期: 2023-09-27 17:56:09
我正在使用Visual Studio Express 2012 for Windows Phone制作Windows Phone 7.1应用程序。
我将此命名空间添加到 MainPage.xaml:
xmlns:myNameSpace="clr-namespace:MyApp"
而这个:
<Grid.Resources>
<myNameSpace:MyClass x:Key="referenceToMyClass" />
</Grid.Resources>
并在同一文件中像这样使用:
<ListBox Name="MyListBox"
Height="{Binding ElementName=ContentPanel, Path=Height}"
Width="{Binding ElementName=ContentPanel, Path=Width}"
ItemsSource="{StaticResource referenceToMyClass}"
DisplayMemberPath="MyAttribute" />
MyClass 看起来像这样:
namespace MyApp
{
class MyClass : ObservableCollection<AnotherClass>
{
public MyClass()
{
Class temp = new AnotherClass("Example attribute");
Add(temp);
}
public void AddAnotherClass(AnotherClass anotherClass)
{
Add(anotherClass);
}
}
}
因此,当我尝试在手机上调试它时,出现以下错误:
System.Windows中发生了类型为"System.Windows.Markup.XamlParseException"的第一次机会异常.dll 其他信息:在类型"MyApp.MyClass"上找不到匹配的构造函数。
这是因为您的类不是公共的。 应该是
public class MyClass : ObservableCollection<AnotherClass>
XAML 无法绑定到非公共对象/类/属性
当代码在 xaml 对象的构造函数中引发MissingMethodException
时,也可能会收到此异常:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var t = Activator.CreateInstance(typeof(T), typeof(int)); // Missing constructor
// or:
//this.GetType().InvokeMember("NonExistingMember", BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, this, new object[0]);
}
}
public class T
{}
xaml 分析器错误地报告找不到 MainWindow
类的构造函数。查看抛出的异常的"内部异常"揭示了失败的真正原因。
我添加这个答案是希望它能为那些遇到与我相同的特定问题的人提供一些帮助:
TeamCity 未能构建几个依赖的 SilverLight 项目,这些项目报告了一个 resgen.exe 错误和无处不在的通用错误代码,这些代码根本没有提供任何见解。
我将 SilverLight项目从 v3 升级到 v5,这允许 TeamCity 进行构建,但是其中一个 SilverLight 屏幕无法显示任何内容,使用 Firefox 没有报告任何错误。
通过使用Visual Studio 2010和IE进行调试,我收到了与OP相同的错误消息,其中包含在调用InitializeComponent()时发生的变体,但不同之处在于该类已经是公开的?!
问题是升级的项目在 resource.resx 文件方面存在问题,在将它们从 SilverLight 项目中完全删除后,整个事情按预期工作。