Возвращение из метода конкретного класса, реализующего интерфейс
Всем привет. Почему не получается в классе i2_c1 реализовать getI с возвращаемым значением конкретного класса? Ведь этот конкретный класс реализует интерфейс, и как я думал, компилятору будет всё равно, что возвращается, главное чтобы интерфейс был реализован. Может быть я делаю что то не так? Вот код:
interface i1
{
int f();
}
class i1_c1 : i1
{
public int f() { return 1; }
}
class i1_c2 : i1
{
public int f() { return 2; }
}
interface i2
{
i1 getI();
}
class i2_c1 : i2
{
public i1_c1 getI()
{
return new i1_c1();
}
}
Этот код компилируется с ошибкой: Ошибка CS0738 'i2_c1" не реализует член интерфейса "i2.getI()". 'i2_c1.getI()" не может реализовать "i2.getI()", потому что не имеет соответствующего возвращаемого типа "i1".
UPD.: Объясните, пожалуйста, почему я не могу установить возвращаемый тип как конкретный класс, реализующий интерфейс, который возвращается?