У меня возникла проблема с преобразованием интерфейса, который уже был реализован в другой класс, который я хочу выполнить с помощью некоторых дополнительных методов.C# - Преобразование интерфейса в альтернативный базовый класс?
public interface ISomeInterface
{
int Widgets { get; set;}
}
public class SomeClassA : ISomeInterface
{
int Widgets { get; set;}
}
public class SomeClassB : ISomeInterface
{
int Widgets { get; set;}
public void DoExtraStuff() {...}
}
ISomeInterface someClassA = new SomeClassA();
SomeClassB someClassB = (ISomeInterface)someClassA; //InvalidCastException
someClassB.DoExtraStuff(); //What i'm trying to execute
Надеется, что это имеет смысл ...
Почему вы пытаетесь вызвать метод в экземпляре, который не имеет этого метода? Экземпляр чего-то не может стать чем-то другим: SomeClassA не SomeClassB, даже если оба реализуют один и тот же интерфейс. – flq