我不确定这里发生了什么,但使用以下代码出现编译器错误:
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>>
,但我想知道为什么这不起作用。