Нужно вернуть определенный тип одной функцией - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, я к вам с интересным на мой взгляд вопросом. Итак внимание! - У меня есть 4 класса. Abs - Абстрактный класс. A - Наследует абстрактный класс Abs и реализует функции A : Abs B - Наследует абстрактный класс Abs и реализует функции B : Abs Config - Класс конфигурации который содержит одну функцию GetRepository() Есть вот такая конструкция.
Листинг программы
  1. Abs _rep = new Config().GetRepository();
Класс Config
Листинг программы
  1. bool clobal = true;
  2. Config
  3. {
  4. clobal = false;
  5. }
  6. public ? GetRepository()
  7. {
  8. if(clobal)
  9. return new A();
  10. else
  11. return new B();
  12. }
Вопрос: Возможно вернуть через функцию GetRepository() в зависимости от значения условия нужный мне тип? A или B. Как мне такое реализовать не изменяя остальные классы кроме класса Config.
Все разобрался нужно указать функции вместо типа dynamic
Листинг программы
  1. public dynamic GetRepository()
  2. {
  3. if(clobal)
  4. return new A();
  5. else
  6. return new B();
  7. }

Решение задачи: «Нужно вернуть определенный тип одной функцией»

textual
Листинг программы
  1. class Program
  2.     {
  3.         static void Main()
  4.         {
  5.             object obj = Magic();
  6.             if (obj as B != null)
  7.                 ((B)obj).F();
  8.             else ((C)obj).F();
  9.             Console.ReadKey();
  10.         }
  11.  
  12.         static object Magic()
  13.         {
  14.             if (new Random().Next(0, 10) < 5)
  15.                 return new B();
  16.             else return new C();
  17.         }
  18.     }
  19.  
  20.     abstract class A
  21.     {
  22.         public virtual void F() { }
  23.     }
  24.     class B : A
  25.     {
  26.         public override void F()
  27.         {
  28.             Console.WriteLine("B");
  29.         }    
  30.     }
  31.     class C : A
  32.     {
  33.         public override void F()
  34.         {
  35.             Console.WriteLine("C");
  36.         }
  37.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы