次の3つのクラス/インターフェイスがあるとします。
public interface IImportViewModel
{
}
public class TestImportViewModel : IImportViewModel
{
}
public class ValidationResult<TViewModel> where TViewModel : IImportViewModel
{
}
TestImportViewModelはIImportViewModelを実装しているのに、なぜ以下がコンパイルされないのですか?
ValidationResult<IImportViewModel> r = new ValidationResult<TestImportViewModel>();
「タイプ'ValidationResult'を'ValidationResult'に暗黙的に変換できません」というエラーメッセージの意味を理解しています。なぜそうなのか理解できません。これは共分散ではないでしょうか?