Это немного запутанный вопрос, надеюсь, я смогу его прояснить.Передача производных объектов в конструкцию
Я нахожу, что это может быть невозможно, но я пытаюсь понять, есть ли у кого-нибудь решение.
У меня есть четыре класса, два являются основными классами и два являются теми основными классы расширены:
extUser
Расширяет coreUser
extSecurity
Расширяет coreSecurity
В конструкторе для coreUser
у вас есть это:
public coreUser(string id, ref coreSecurity cs)
При попытке расширения coreUser
вы бы хотели е это:
public extUser(string id ref extSecurity es) : base(id, ref es)
Это терпит неудачу, потому что эс имеет тип, extSecurity
и базовый класс ожидает тип coreSecurity
. Я все равно не нашел это, чтобы позволить мне переопределить этот базовый класс в C#. В VB это работает отлично.
В качестве примечания, я, ради этого вопроса, 100% не смог внести изменения в основные классы.
Идеи?
ref также может использоваться с ссылочными типами. Эти два понятия в основном ортогональны. См., Например, Dictionary.TryGetValue, имея в виду, что это очень похоже на ref. –
Да, его можно использовать и с ссылочными типами, как я писал (сама ссылка является типом значения, поэтому ссылочный ссылочный тип ref является ссылкой на ссылку), что позволяет вам назначать новый объект параметру, и это будут отражаться вне метода. Параметры вывода в этом случае являются чем-то другим. – Femaref
Пока я вижу, что вы пытаетесь сказать, ИМО, вызывающая ссылку, тип значения очень запутан. Как я могу получить объект Type, связанный с этим предполагаемым типом? Если кто-то не понимает, что означает ref, я думаю, что ваш ответ скорее смутит, чем осветит. Я подозреваю, что ref здесь не нужен, но не обязательно потому, что конструктор делает слишком много работы. –