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

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

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

Здравствуйте, я к вам с интересным на мой взгляд вопросом. Итак внимание! - У меня есть 4 класса. Abs - Абстрактный класс. A - Наследует абстрактный класс Abs и реализует функции A : Abs B - Наследует абстрактный класс Abs и реализует функции B : Abs Config - Класс конфигурации который содержит одну функцию GetRepository() Есть вот такая конструкция.
Abs _rep = new Config().GetRepository();
Класс Config
bool clobal = true;
 
Config 
{
    clobal = false;
}
 
public ? GetRepository()
{
   if(clobal)
     return new A();
   else
     return new B();
}
Вопрос: Возможно вернуть через функцию GetRepository() в зависимости от значения условия нужный мне тип? A или B. Как мне такое реализовать не изменяя остальные классы кроме класса Config.
Все разобрался нужно указать функции вместо типа 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");
        }
    }

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


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

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

11   голосов , оценка 3.727 из 5
Похожие ответы