Уважайте чужое время
75 / 23 / 8
Регистрация: 01.02.2013
Сообщений: 191
1

Не имеющий конструктора без параметров базовый класс (аргументов) не разрешает плодить наследников

13.11.2015, 09:43. Показов 1594. Ответов 3

Author24 — интернет-сервис помощи студентам
Здравствуйте, никак не могу понять, в чём проблема.
Возникла необходимость переопределить аргументы для BackgroundWorker'а в DoWork, но при переопределении возникли трудности. Появилось две идентичных ошибки в разных строках: с очевидным я справился путём гугления (добавил параметр в наследуемый конструктор), а вот с последней ошибкой справиться не могу.
Вот код:
C#
1
2
3
4
5
6
7
8
9
10
    public class MyEvArgs : DoWorkEventArgs
    {
        public MyEvArgs(object argument, typename srv)
            : base(argument)
        {
            Serv = srv;
        }
        public object arg;
        public readonly typename Serv;
    }
Осталась ошибка в первой строке выложенного куска кода, т.е. он ругается на объявлении класса, на ИМЯ класса, сообщая об отсутствии конструктора с нулём параметров. Как с этим бороться?
C#
1
'System.ComponentModel.DoWorkEventArgs' does not contain a constructor that takes 0 arguments   ...

Что парадоксально для меня, вот по сути идентичный кусок кода, и ошибка изначально одна и решается просто:
C#
1
2
3
4
5
6
7
8
9
10
    public class baseclass1
    {
        public baseclass1(int i)
        { }
    }
    public class child1 : baseclass1 
    {
        child1(int i) : base(i)
        { }
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2015, 09:43
Ответы с готовыми решениями:

Изменение параметров конструктора без аргументов
Как в конструкторе без параметров изменить значения из функции main?

Буст сериализация. указатель на абстрактный базовый класс без конструктора по умолчанию
Читая документацию по сериализации с помощью буста запутался. Ситуация следующая. Имеется...

Запись в базовый класс информации из наследников
Написать перегруженный оператор преобразования типов который будет вытягивать из класса наследников...

Как сделать, чтоб при реализации фабричного метода, базовый класс видел наследников?
и при этом нельзя инклудить файлы наследников в базовый класс.

3
91 / 91 / 44
Регистрация: 20.04.2008
Сообщений: 331
13.11.2015, 10:00 2
Объявите в DoWorkEventArgs конструктор без параметров и все
0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
13.11.2015, 10:28 3
Лучший ответ Сообщение было отмечено big1991 как решение

Решение

Цитата Сообщение от big1991 Посмотреть сообщение
не могу понять, в чём проблема.
В приведенном вами коде проблемы нет — возможно, где-то в другом месте используется похожая конструкция, но без вызова базового конструктора, возможно вы где-то пытаетесь создать экземпляр DoWorkEventArgs вручную, не передавая параметр, а возможно просто проект не перекомпилировался или студия проглючила.

Но здесь более интересно другое: а зачем наследоваться от этого класса для того, чтобы передать дополнительную ссылку? И как вы потом будете контролировать, экземпляр какого типа будет создавать BackgroundWorker?
Не проще было бы просто в качестве аргумента передавать ссылку на экземпляр своего класса, в котором будут все необходимые поля?

То есть вместо этого:
C#
1
2
3
4
5
6
7
worker.RunWorkerAsync(argument, srv)
...
void DoWork(MyEvArgs e)
{
   typename srv = e.Serv;
   object arg = e.Arg;
}
Делать это:
C#
1
2
3
4
5
6
7
8
worker.RunWorkerAsync(new MyWorkerArgs(argument, srv));
...
void DoWork(DoWorkEventArgs  e)
{
   var myArgs = e.Argument as MyWorkerArgs;
   var serv = myArgs.Serv;
   var arg = myArgs.Argument;
}
1
Уважайте чужое время
75 / 23 / 8
Регистрация: 01.02.2013
Сообщений: 191
13.11.2015, 10:43  [ТС] 4
kolorotur, действительно, перестроил решение — ошибка ушла, спасибо.
А за подсказку — отдельное спасибо! Так действительно правильнее.
0
13.11.2015, 10:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2015, 10:43
Помогаю со студенческими работами здесь

Передача параметров в базовый класс
Подскажите как лучше реализовать передачу параметров из производного класса в базовый? Я...

Из конструктора без параметров в конструктор с параметрами
Подскажите, пожалуйста, как в классах из конструктора без параметров сделать конструктор с...

Требование от потомков наличия обязательного конструктора БЕЗ параметров.
мой предыдущий вопрос был про обязательные конструкторы вида MyClass(ResultSet) решение,...

Инициализация с помощью конструктора без параметров. Почему не нужны скобки?
Доброго времени суток форумчане. Такой вопрос , почему в конструкторе без параметров не нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru