public interface IA {
int doA();
}
public interface IB {
int doB();
}
class Impl1: IA, IB {
int doA() => 1;
int doB() => 2;
}
class Impl2: IA, IB {
int doA() => 3;
int doB() => 4;
}
< /code>
Я хочу иметь переменную, которую я могу назначить оба экземпляра IMPL1 и IMPL2, и что я могу вызвать doA () и dob () на типов.IA it = default;
if (condition) it = new Impl1()
else it = new Impl2();
it.doA() // all good
((IB)it).doB() // I know this is safe because I know that it will always be an IB, but the compiler doesn't help me here
В C#у меня есть следующие классы и интерфейсы (вне моего контроля) < /p> [code]public interface IA { int doA(); }
public interface IB { int doB(); }
class Impl1: IA, IB { int doA() => 1; int doB() => 2; }
class Impl2: IA, IB { int doA() => 3; int doB() => 4; } < /code> Я хочу иметь переменную, которую я могу назначить оба экземпляра IMPL1 и IMPL2, и что я могу вызвать doA () и dob () на типов.IA it = default; if (condition) it = new Impl1() else it = new Impl2(); it.doA() // all good ((IB)it).doB() // I know this is safe because I know that it will always be an IB, but the compiler doesn't help me here [/code] Есть ли более безопасный способ сделать это?