Нужно вернуть определенный тип одной функцией - 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");
}
}