Проблема с методом расширения: IXmlLineInfo - PullRequest
1 голос
/ 13 января 2011

Когда я пытаюсь использовать любой метод расширения для моего класса в 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, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e'.

Если я заменил ExtMethod() любым свойством

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

например, все хорошо ...

Почему? Как я могу предотвратить это?

P.S. Кажется, что вопрос дублирует один из моего предыдущего или другого . Но текущий является более конкретным и довольно подробным.

P.S. Я пытался добавить ссылку на сайт вручную, VisualStuido сообщает, что на него уже есть ссылка ...

Ответы [ 3 ]

1 голос
/ 13 января 2011

убедитесь, что вы импортируете пространство имен вашего метода расширения в заголовок элемента управления:

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

или мое предпочтение, добавив его в web.config, чтобы вам не пришлось импортировать его повсюду

<pages>
    <namespaces>
        <add namespace="My.Extension.Namespace"/>
    </namespaces>
</pages>
1 голос
/ 18 января 2011

Я не знаю, что является источником такого странного поведения ... с этим методом расширения все в порядке ... ответьте на другой вопрос (/3480355/problema-s-system-xml-ixmllineinfo#3480364) также решен текущий вопрос.

1 голос
/ 13 января 2011

Похоже, ваш проект не имеет ссылки на System.Xml, и вы используете его в реальной реализации вашего метода расширения.

...