以下方法之间的调用有歧义:Identical.NameSpace.InitializeComponent()与Identical.NameSpace.InitializeComponent()好吧,我怀疑这可能是VisualStudio的问题,但肯定有一些原因。我从默认的项目列表创建了一个ListBox(右键单击项目,或项目中的文件夹->添加->新项目->XamlListBox)。我立即收到一条带有错误的红色波浪线:“错误2以下方法或属性之间的模糊调用:‘Identical.NameSpace.ListBox1.InitializeComponent()’和‘Identical.NameSpace.ListBox1.InitializeComponent()’C:DocumentsandSettingsouflakMyDocumentsVisualStudio2010ProjectsIdenticalNameSpaceListBox1.xaml.cs27"所有相关代码都是自动生成的,错误是由于两个自动生成的文件之间存在冲突:ListBox1.g。cs和ListBox1.designer.cs,其中都声明了publicvoidInitializeComponent()。当然,在这种情况下代码无法编译。只需删除ListBox1.designer.cs就可以了,我想继续。但我的问题是:为什么这段代码会自动产生这个错误?我希望任何自动生成的东西都能够在不触及项目或任何代码的情况下构建和编译。您可以添加的几乎所有其他工具箱项目都是这种情况。那么为什么这段代码会生成内置错误呢?我们应该找到一些方法来完成这项工作吗?这段代码只是一个建议,由IDE用户/开发人员决定细节吗?下面是生成的代码:ListBox1.xaml:Item1Item2Item3ListBox1.g.cs:namespaceIdentical.Namespace{//////ListBox1///[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks",“4.0.0.0”)]公共部分类ListBox1:System.Windows.Controls.ListBox,System.Windows.Markup.IComponentConnector{privatebool_contentLoaded;//////InitializeComponent///[System.Diagnostics.DebuggerNonUserCodeAttribute()]publicvoidInitializeComponent(){if(_contentLoaded){返回;}_contentLoaded=真;System.UriresourceLocater=newSystem.Uri("/MyProject;component/namespace/listbox1.xaml",System.UriKind.Relative);#第1行“...namespaceListBox1.xaml”System.Windows.Application.LoadComponent(this,resourceLocater);#linedefault#linehidden}[System.Diagnostics.DebuggerNonUserCodeAttribute()][System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)][System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design","CA1033:InterfaceMethodsShouldBeCallableByChildTypes")][System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability","CA1502:AvoidExcessiveComplexity")][System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance","CA1800:DoNotCastUnnecessarily")]voidSystem.Windows.Markup.IComponentConnector.Connect(intconnectionId,objecttarget){this._contentLoaded=true;}}}ListBox1.designer.cs:namespaceIdentical.NameSpace{usingSystem;publicpartialclassListBox1:System.Windows.Controls.ListBox{privatevoidInitializeComponent(){//PreStatements...stringstring1="Item1";stringstring2="项目2";stringstring3="项目3";//声明...this.BeginInit();this.Items.Add(string1);this.Items.Add(string2);this.Items.Add(string3);这个.EndInit();//发表声明...}}}最后是ListBox1.xaml.cs(仅修改以防止XML文档和Stylecop警告):namespaceIdentical.NameSpace{//////ListBox1class///publicpartialclassListBox1:ListBox{//////初始化ListBox1类的新实例///publicListBox1(){this.InitializeComponent();就是这样这是自动生成状态下的完整代码,除了我放入xaml.cs文件中的注释。我搜索过这个网站和互联网,但似乎没有人解释过这种行为。我可能会删除designer.cs代码并继续。但是,如果有人首先知道为什么会出现在这里,或者它是否确实是VisualStudio2010Professional中的错误,我真的很想知道。您似乎在类中的两个位置声明了InitializeComponent方法,可能在每个分部类中声明了一个方法。尝试在VisualStudio的所有文件中搜索InitializeComponent,我猜结果会列出声明它的两个地方。删除一个,错误就会消失。更新>>>我不确定您在这里期待什么样的答案......如果您不添加InitializeComponent方法定义之一,显然在visualstudio中存在错误。除了它是一个错误之外,我非常怀疑它有任何合乎逻辑的原因。更新2>>>我查看了MicrosoftConnect站点是否存在任何已报告的错误,但找不到任何...如果您想向他们报告,我已将链接留在此处。在控件之间复制XAML时遇到了这个问题。我只需要更改我的x:Class="mynamespace",其中mynamespace是项目的正确命名空间。重新编译,一切恢复正常。我的问题是给我模糊调用的项目引用了它自己的dll。这导致从dll以及实际项目中引用该方法。一旦我从引用中删除了dll,模棱两可的调用错误就消失了。如果您对使用Resharper的方式不警惕和小心,就会发生这种情况。当我允许Resharper在编码时自动导入引用时,这发生在我身上。所以一开始打错了,然后编辑我正在处理的代码,我没有检查它导入的是什么。遇到同样的问题后,我意识到同一个库中有一个自引用。所以有问题的方法有双重实现。这两个类都是部分的,这意味着它们彼此共享非私有字段和方法。ListBox1有两个InitializeComponent(共享)方法。更改ListBox1的命名空间将解决此错误。我认为InitializeComponent()是在同一类的两个不同位置声明的。尝试按CTR+F查找两个类定义,然后解决歧义。我在用户控件和相关样式中遇到了这个问题。我想我尝试过将一些逻辑移到样式类中,但没有用,所以我将其取消,但显然遗漏了一些东西。它还抱怨_contentLoaded变量,所以我尝试删除那里的那个,错误消失了,没有被另一个替换。然后我按F12转到_contentLoaded的定义,发现它在样式类的*.g文件中。文件以样式命名,而内部类则以用户控件命名。我删除了bin和obj文件夹来解决它。我设法通过使用文本编辑器查看.csproj文件并查找表适配器XSD文件的名称来解决此问题。我发现对它的两个引用之一有不同的别名,这就是我收到此错误消息的原因。我刚刚解决了这个问题。它发生在我在WinForms程序中复制表单期间或之后的某个时刻,然后将其重命名为blah_Copy。主cs文件和设计器cs文件都是分部类。因此,如果在两者中都定义了一个方法,并且它具有相同的名称和参数(或相同的名称和相同的无参数),/相同的签名,那么它将发生冲突。在我的例子中,它们都是Initialize(){..}定义,具有相同的主体,所以我很容易删除一个。我们还假设该方法是Initialize()(在我的例子中)。如果你去给自己打电话,然后按F12,它将转到其中一个定义((或者甚至可能至少是一个)。以上是C#学习教程:以下方法之间的调用不清楚:Identical.NameSpace.InitializeComponent()和Identical.NameSpace.InitializeComponent()分享所有内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
