ここで何が起こっているのかわかりませんが、次のコードを使用するとコンパイラ エラーが発生します。
namespace SO
{
interface IUser<PostType>
{
PostType Post { get; set; }
}
interface IPost<UserType>
{
UserType User { get; set; }
}
class User : IUser<Post>
{
//Implementation
}
class Post : IPost<User>
{
//Implementation
}
class SomeOtherClass
{
// Compiler Error: Cannot implicitly convert type 'SO.User' to
// 'SO.IUser<SO.IPost<SO.User>>'. An explicit conversion exists
// (are you missing a cast?)
IUser<IPost<User>> user = new User();
//Works Fine
IUser<Post> user = new User();
}
}
Post
が のサブタイプである場合にエラーが発生するのはなぜIPost<User>
ですか? この場合、User
の代わりに使用できることIUser<IPost<User>>
はわかっていますが、これが機能しない理由を知りたいです。