-2
У меня есть следующий интерфейс:Generic класса с не общим интерфейсом
interface IMyInterface
{
string Message { set; get; }
}
Мой общий класс:
public class MyClass<T> : IMyInterface
{
public T item;
public string Message{ set; get; }
}
мне нужно отбрасывать между различными родовыми классами, например:
MyClass<String> myClassString = new MyClass<String>();
MyClass<Boolean> myClassBoolean = new MyClass<Boolean>();
myClassString = (IMyInterface)myClassBoolean; //This code not working.
myClassString = (MyClass<String>)(IMyInterface)myClassBoolean // This code working.
Мой вопрос: почему в первом случае мой код не работает, а во втором случае работает мой код? Каков наилучший способ сделать это?
сообщения об ошибках вы получаете в каждом случае будет точно сказать, почему код ISN Не работаем. – Servy
Второй не приведет к ошибке компилятора, но при запуске литье закончится, поэтому «работа» не является точно точным описанием. –
@mikez Да, но я выполнил следующую операцию: myClassString = (MyClass) (IMyInterface) myClassBoolean; if (myClassBoolean.Item) myClassString.Item = «Hola»; в этом случае код работает, правильно ?, но какой лучший способ сделать это? –
Chiro300