Я хочу создать много классов обслуживания, которые используют общий набор функций. Все эти классы наследуют класс ClientBase, который предоставляется Microsoft. В настоящее время я написал эти общие функции как частные методы в классе. Каков наилучший способ сделать это, чтобы избежать повторения кода и эффективности. Я не могу добавить эти общие методы в базовый класс, поскольку он не может быть изменен.Наследовать общие функции в C#
0
A
ответ
3
Имейте свой собственный абстрактный базовый класс, который наследует ClientBase<T>
, назовите его MyClientBase<T>
, переместите общие методы на него и сделайте их защищенными, чтобы преемники могли получить к ним доступ. Затем сделайте свои классы обслуживания наследованием MyClientBase<T>
.
0
Если все другие классы непосредственно наследуются от ClientBase<T>
, я попытался бы определить дополнительные функции с помощью методов расширения ClientBase<T>
.
Я реализую его как 'public abstract class WingsClientBase: ClientBase где T: class' Допустимо, поскольку ClientBase использует интерфейс, и я пишу' where T: class' в определении. Я получаю ошибку компилятора ** Ошибка компилятора CS0452 - MSDN - Microsoft ** без записи 'где T: class' –
Эта ошибка возникает, когда вы передаете тип значения, например struct или int, в качестве параметра для общего типа или метода, который имеет ограничение ссылочного типа. Избавьтесь от ограничения типа T: class или не используйте его со значениями типов. –