Код: Выделить всё
internal class Program
{
interface IGetString
{
string GetString();
}
class A : IGetString
{
public string GetString() => "A";
}
class B : IGetString
{
public string GetString() => "B";
}
interface ICreate
{
T Create();
}
class C : ICreate, ICreate
{
A ICreate.Create()
{
return new A();
}
B ICreate.Create()
{
return new B();
}
}
static string X(ICreate creator)
{
return creator.Create().GetString();
}
static void Main()
{
ICreate createB = new C();
var s = X(createB);
Console.WriteLine("Result: " + s);
}
}
Он просто вызывает метод создания первого реализованного интерфейса: iCreate , ICReate . Обмен их изменяет результат.
Код: Выделить всё
static string X(ICreate creator) where T : IToString
{
return creator.Create().GetString();
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... hod-called