Нужно вернуть определенный тип одной функцией - C#
Формулировка задачи:
Здравствуйте, я к вам с интересным на мой взгляд вопросом.
Итак внимание! - У меня есть 4 класса.
Abs - Абстрактный класс.
A - Наследует абстрактный класс Abs и реализует функции A : Abs
B - Наследует абстрактный класс Abs и реализует функции B : Abs
Config - Класс конфигурации который содержит одну функцию GetRepository()
Есть вот такая конструкция.
Класс Config
Вопрос: Возможно вернуть через функцию GetRepository() в зависимости от значения условия нужный мне тип? A или B. Как мне такое реализовать не изменяя остальные классы кроме класса Config.
Abs _rep = new Config().GetRepository();
bool clobal = true; Config { clobal = false; } public ? GetRepository() { if(clobal) return new A(); else return new B(); }
Все разобрался нужно указать функции вместо типа dynamic
public dynamic GetRepository() { if(clobal) return new A(); else return new B(); }
Решение задачи: «Нужно вернуть определенный тип одной функцией»
textual
Листинг программы
class Program { static void Main() { object obj = Magic(); if (obj as B != null) ((B)obj).F(); else ((C)obj).F(); Console.ReadKey(); } static object Magic() { if (new Random().Next(0, 10) < 5) return new B(); else return new C(); } } abstract class A { public virtual void F() { } } class B : A { public override void F() { Console.WriteLine("B"); } } class C : A { public override void F() { Console.WriteLine("C"); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д