2016-05-09 7 views
0

Я хочу создать много классов обслуживания, которые используют общий набор функций. Все эти классы наследуют класс ClientBase, который предоставляется Microsoft. В настоящее время я написал эти общие функции как частные методы в классе. Каков наилучший способ сделать это, чтобы избежать повторения кода и эффективности. Я не могу добавить эти общие методы в базовый класс, поскольку он не может быть изменен.Наследовать общие функции в C#

ответ

3

Имейте свой собственный абстрактный базовый класс, который наследует ClientBase<T>, назовите его MyClientBase<T>, переместите общие методы на него и сделайте их защищенными, чтобы преемники могли получить к ним доступ. Затем сделайте свои классы обслуживания наследованием MyClientBase<T>.

+0

Я реализую его как 'public abstract class WingsClientBase : ClientBase где T: class' Допустимо, поскольку ClientBase использует интерфейс, и я пишу' where T: class' в определении. Я получаю ошибку компилятора ** Ошибка компилятора CS0452 - MSDN - Microsoft ** без записи 'где T: class' –

+1

Эта ошибка возникает, когда вы передаете тип значения, например struct или int, в качестве параметра для общего типа или метода, который имеет ограничение ссылочного типа. Избавьтесь от ограничения типа T: class или не используйте его со значениями типов. –

0

Если все другие классы непосредственно наследуются от ClientBase<T>, я попытался бы определить дополнительные функции с помощью методов расширения ClientBase<T>.