扩展方法问题:IXmlLineInfo

时间:2011-01-13 13:54:29

标签: c# .net extension-methods

当我尝试在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 previousanother one之一重复。但目前的更具体,更详细。

P.S。我试图手动添加对网站的引用,VisualStuido告诉它已经引用了...

3 个答案:

答案 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)也解决了当前的问题。