2011-01-13 52 views
1

当我尝试使用任何扩展方法上我的课在ASCX控制:问题的扩展方法:IXmlLineInfo

<%@ 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文件

我得到了以下错误:

error CS0012: The type 'System.Xml.IXmlLineInfo' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Xml, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.

如果我换成ExtMethod()任何财产

<%= Team.GetTeamById(2).PropOk %> 

例如,一切都很好...

为什么?我怎样才能防止这一点?

P.S.这似乎是问题重复到my previousanother one之一。但目前的更具体和相当详细。

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

回答

1

我不知道什么是这种奇怪的行为的源泉......一切都很好,与此扩展方法...回答另一个问题(http://stackoverflow.com/questions/ 4665475/problem-with-system-xml-ixmllineinfo/4719876#4719876)解决了当前问题也是。

1

听起来好像你的项目没有对System.Xml的引用,你正在使用它的真正的实现你的扩展方法。

+0

我试过了。这样做手动VS告诉DLL已被引用(但我不知道如何)。为了通过网络添加它,配置 - 我需要公共令牌...你能建议,我怎么能得到它? – Budda 2011-01-13 14:48:36

1

确保你要么导入您的扩展方法的命名空间中控制头部:

<%@ Import Namespace="My.Extension.Namespace" %> 

或我的偏好,将其添加到web.config文件,所以你不必遍布进口地方

<pages> 
    <namespaces> 
     <add namespace="My.Extension.Namespace"/> 
    </namespaces> 
</pages> 
+0

是的,命名空间被使用...(我编辑了问题主体以反映这一点)。 – Budda 2011-01-13 14:32:44