Объявление и использование делегатов в пользовательском контроле - PullRequest
0 голосов
/ 25 февраля 2011

Я что-то здесь упускаю, у меня есть два пользовательских элемента управления, у каждого из которых есть событие, использующее один и тот же делегат, поэтому я помещаю оба пользовательских элемента управления в одно и то же пространство имен, примеры ниже

1-й контроль

namespace Standalone.Controls
{
    public delegate void onDataChanged(object sender);
    public partial class TestItemWeb : System.Web.UI.UserControl
    {
        internal event onDataChanged DataChanged;

2-й контроль

namespace Standalone.Controls
{
    public partial class TestControlWeb : System.Web.UI.UserControl
    {
        internal event onDataChanged DataChanged;

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

Ошибка компиляции

Описание: произошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса. Пожалуйста, просмотрите следующие конкретные подробности ошибки и измените свой исходный код соответствующим образом.

Сообщение об ошибке компилятора: CS0246: не удалось найти тип или имя пространства имен onDataChanged (отсутствует директива using или ссылка на сборку?)

Ошибка источника:

Строка 13: открытый частичный класс TestControlWeb: System.Web.UI.UserControl

Строка 14: {

Строка 15: внутреннее событие onDataChanged DataChanged;

1 Ответ

0 голосов
/ 25 февраля 2011

Преобразуйте ваш проект в Веб-приложение , потому что Веб-сайт - это действительно боль в работе.
Кроме того, я вижу, что вы используете очень странное соглашение для событий.

В обработчиках событий .NET обычно есть два параметра, один из которых object sender, а тип второго должен быть производным от EventArgs.Если вы не хотите передавать какую-либо информацию, просто оставьте ее EventArgs и передайте EventArgs.Empty.

Вам не нужно определять пользовательские делегаты для событий - фреймворк уже предоставляет вам простой EventHandler и универсальный EventHander<TEventArgs>, который позволяет вам указать тип EventArgs, когда вы хотите передать информацию.

Я обычно также пишу вспомогательный класс EventArgs<T> с единственным свойством Item, которое позволяет мне быстропередать что-то без загрязнения кодовой базы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...