当前位置: 首页 > 编程语言 > C#

单个方法,即扩展方法之间的调用有歧义分享

时间:2023-04-10 18:49:28 C#

单个方法,即扩展方法之间的调用,有歧义staticstringGetTLD(thisstringstr){varhost=newSystem.Uri(str).Host;intindex=host.LastIndexOf('.'),last=3;while(index>=last-3){last=index;index=host.LastIndexOf('.',last-1);}vardomain=host.Substring(index+1);返回域;}}我称它为stringdomain="."+_url.GetTLD();我正在构建和清理构建而没有错误。但是我在运行时遇到编译错误,说以下方法或属性之间的调用不明确:'myignOU.Extension.GetTLD(string)'和'myIGNOU.Extension.GetTLD(string)'我发誓我没有把这个扩展方法放在其他任何地方在项目中。为什么我只在运行时收到此错误..?但是,如果我删除此方法,那么我会在构建时出错,而不是在运行时出错。没有此方法的代码,一切正常。这是编译错误页面我遇到了同样的问题,但对我来说它解决了从项目引用中删除我自己的项目。Resharper不小心添加了对同一项目的已编译二进制文件的引用。这样我的项目中就有两次相同的扩展类。在构建期间,它无法区分扩展类的源版本或二进制版本。所以基本上:检查项目引用是否包含对自身的引用。@shashwat提供的答案也是一个案例。这不是真正的解决方案,我无法解释它是如何工作的,但它确实有效。我正在尝试项目属性、引用、bin、obj中的所有内容,但没有任何帮助。我只是尝试了每个选项并从上下文菜单中选择了“转换为Web应用程序”。虽然之前它是一个网络应用程序。它向我显示一条警告,说.designer.cs文件将被添加到每个aspx文件中,我只需单击“确定”。保持一切相同,除了App_Code文件夹(所有这些类所在的位置),重命名为旧App_Code,我将构建项目。现在我不会在运行时遇到编译错误。我知道App_Code文件夹用于网站项目,直到这次WAP之前我都没有遇到任何问题。但我刚刚意识到我不应该在WAP中使用App_Code文件夹,因为这在wrox论坛上有讨论(第1点)。作者这里说WAP不支持App_Code。App_Code文件夹在运行时编译;WAP中的所有代码都是在编译/开发时编译的。所以当你添加App_Code文件夹到WAP时。你最终得到了重复的代码;例如,App_Code中定义的类也将出现在wapDLL中。修复很简单:只需将文件夹命名为Classes或CodeFiles。我尝试在转换前重命名,但那次没有用。我也有同样的问题。经过一些研究和实验,我发现(无论出于何种原因)visualstudio不喜欢App_Code文件夹中的扩展方法。我找到的最简单的解决方案是只更改文件夹的名称。我有同样的情况。我有一个带有扩展方法的自定义网格控件。该方法仅在一处声明。此控件已在我的解决方案中的多个位置使用,没有任何问题。然后有一天,我通过在同一个项目中逐字复制和粘贴来复制一个控件来实现自定义网格控件。然后我只是根据需要重命名属性。之后,解决方案不会引用与上述相同的错误。我怀疑复制和粘贴会为项目添加对自身的引用。删除它解决了问题。我的问题与shashwat描述的类似。在我的例子中,我将代码文件放在App_Code目录中,但为了获得智能感知,我将文件本身设置为编译,这可能意味着文件在运行时和编译时都被编译。我刚刚将文件从App_Code中移出。我在上面的评论中找到了这个解决方案。它帮助了我。我在项目A中引用了项目A。说错了。删除帮助=)以上就是C#学习教程:单个方法,即扩展方法之间的调用,就是分享的全部内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——网络收藏不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: