SB
Если засунуть второй интерфейс, то вернуть другой класс который реализует воторой интерфейс.
Чувствуешь подвох?
Size: a a a
SB
НП
НП
НП
EA
EA
SB
class Program
{
static void Main()
{
var manager = new Manager();
var service = (IService1) manager.GetData<IService1>();
}
}
public class Manager
{
public object GetData<T>() where T : class
{
switch (typeof(T).ToString())
{
case "IService1":
return new Worker1();
case "IService2":
return new Worker2();
default:
return null;
}
}
}
SB
class Program
{
static void Main()
{
var manager = new Manager();
var service = (IService1) manager.GetData<IService1>();
}
}
public class Manager
{
public object GetData<T>() where T : class
{
switch (typeof(T).ToString())
{
case "IService1":
return new Worker1();
case "IService2":
return new Worker2();
default:
return null;
}
}
}
GK
class Program
{
static void Main()
{
var manager = new Manager();
var service = (IService1) manager.GetData<IService1>();
}
}
public class Manager
{
public object GetData<T>() where T : class
{
switch (typeof(T).ToString())
{
case "IService1":
return new Worker1();
case "IService2":
return new Worker2();
default:
return null;
}
}
}
SB
НП
НП
GK
НП
GK
НП
GK
SB
class Program
{
static void Main()
{
var manager = new Manager();
var service = manager.GetData<IService1>();
if (service is IService1)
{
Console.WriteLine("Service1");
}
Console.ReadLine();
}
}
public class Manager
{
public T GetData<T>() where T : class
{
dynamic worker;
switch (typeof(T).Name)
{
case "IService1":
worker = new Worker1();
return (T)worker;
case "IService2":
worker = new Worker2();
return (T) worker;
default:
return null;
}
}
}
GK
НП