Нужно вернуть определенный тип одной функцией - 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");
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д