interface IFolderOrItem<TFolderOrItem> where TFolderOrItem : FolderOrItem {}
abstract class FolderOrItem {}
class Folder : FolderOrItem {}
abstract class Item : FolderOrItem {}
class Document : Item {}
は今、私はこのようなSTHをやろうとしている:なぜこのキャストはできないのですか?
class Something
{
IFolderItemOrItem<Item> SelectedItem { get; set; }
void SomeMagicMethod()
{
this.SelectedItem = (IFolderOrItem<Item>)GetMagicDocument();
// bad bad bad ... ??
}
IFolderOrItem<Document> GetMagicDocument()
{
return someMagicDocument; // which is of type IFolderOrItem<Document>
}
}
は、この作業を取得するための任意の可能性はありますか?
どのようなエラーメッセージが表示されますか?コンパイル時間? –
キャストなし=コンパイル時間。キャスト=実行時間 –
(私の返信にあなたのコメントごとに注意してください、少なくともそれが動作する非ジェネリックベースインターフェイスのいくつかのノートを追加しました) –