2011-01-13 42 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