当我尝试在ascx-control中对我的类使用任何扩展方法时:
<%@ Import Namespace="VfmElita.Page.Stat" %>
<%=new MyTestClass().ExtMethod() %>
这是世界上最简单的方法:
namespace VfmElita.Page.Stat
{
public static class TestExtention
{
public static string ExtMethod(this MyTestClass test)
{
return "Hope for result";
}
}
}
(它位于控件的ascx.cs文件中
我收到以下错误:
错误CS0012:类型'System.Xml.IXmlLineInfo'在未引用的程序集中定义。您必须添加对程序集'System.Xml,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e'的引用。
如果我将ExtMethod()
替换为任何属性
<%= Team.GetTeamById(2).PropOk %>
例如,一切都很好......
为什么呢?我该如何防止这种情况?
P.S。似乎问题与my previous或another one之一重复。但目前的更具体,更详细。
P.S。我试图手动添加对网站的引用,VisualStuido告诉它已经引用了...
答案 0 :(得分:1)
听起来您的项目没有System.Xml
的引用,而是在扩展方法的实际实现中使用它。
答案 1 :(得分:1)
确保您要在控件标头中导入扩展方法的命名空间:
<%@ Import Namespace="My.Extension.Namespace" %>
或我的偏好,将其添加到web.config,这样您就不必在整个地方导入
<pages>
<namespaces>
<add namespace="My.Extension.Namespace"/>
</namespaces>
</pages>
答案 2 :(得分:1)
我不知道这种奇怪行为的来源是什么......这种扩展方法一切都很好......回答另一个问题(http://stackoverflow.com/questions/4665475/problem-with- system-xml-ixmllineinfo / 4719876#4719876)也解决了当前的问题。