Как быть с CS1721, когда мне действительно нужно наследовать от двух классов?

В моем коде C# мне нужен класс CustomIdentity, который наследуется от классов System.MarshalByRefObject и System.Security.Principal.GenericIndentity.

Однако, когда я пытаюсь написать такое наследование, С# будет возражать с ошибкой CS1721, говоря Я не могу напрямую наследовать от более чем одного класса.

Теперь в этом случае это довольно легко преодолеть - я наследую от IIdentity, добавлю переменную-член GenericIdentity и повторно реализую все методы IIdentity через эту переменную-член.

Но что мне делать, если я хочу наследоваться от двух классов с огромным набором методов?


person sharptooth    schedule 28.06.2011    source источник
comment
Единственный способ - это инкапсуляция с интерфейсами, как вы сказали.   -  person leppie    schedule 28.06.2011


Ответы (2)


Вы не знаете. Вы не можете.

Это не поддерживается в C# или .NET.

Вы используете несколько реализаций интерфейса и максимум одиночное (не-object) наследование. В большинстве случаев даже единичное наследование чрезмерно используется ;p

Чтобы усвоить методы, вам придется использовать какую-то инкапсуляцию. Методы расширения также предоставляют способ совместного использования методов между типами для полноты картины.

person Marc Gravell    schedule 28.06.2011
comment
Небольшой пример пожалуйста - person ; 02.01.2018
comment
@YumYumYum какого именно бита? - person Marc Gravell; 02.01.2018
comment
Как использовать реализацию нескольких интерфейсов для public partial class AppDelegate : UIApplicationDelegate, UIResponder { - person ; 02.01.2018

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

person maddom    schedule 28.06.2011