C#泛型抽象类-没有隐式引用转换

C#泛型抽象类-没有隐式引用转换,c#,asp.net-mvc-4,generics,C#,Asp.net Mvc 4,Generics,我有一个问题,一些代码,过去编译,现在没有(升级到MVC4后)。代码位于从具有一些泛型的抽象基类继承的类中。我已经搜索了所有地方,每个人的问题/答案都接近我想要做的,但没有匹配,所以请让我知道,如果我只是完全不喜欢谷歌或什么。这里的任何地方都是我正在使用的基本实现 namespace Site.ViewModels.EasyEnrol.AbstractClasses { public abstract class HomeViewModel<T> where T: HomeA

我有一个问题,一些代码,过去编译,现在没有(升级到MVC4后)。代码位于从具有一些泛型的抽象基类继承的类中。我已经搜索了所有地方,每个人的问题/答案都接近我想要做的,但没有匹配,所以请让我知道,如果我只是完全不喜欢谷歌或什么。这里的任何地方都是我正在使用的基本实现

namespace Site.ViewModels.EasyEnrol.AbstractClasses
{
    public abstract class HomeViewModel<T> where T: HomeAddressViewModel
    {
        public abstract T AddressViewModel { get; set; }
    }
}

namespace Site.ViewModels.EasyEnrol.Addresses
{
    public class HomeAddressViewModel
    {
    }
}

namespace Site.ViewModels.EasyEnrol.Addresses
{
    public class SingleFamilyAddressViewModel : HomeAddressViewModel
    {
    }
}

namespace Site.ViewModels.EasyEnrol.Enrolments
{
    public class SingleFamilyEnrollmentViewModel : HomeViewModel<SingleFamilyAddressViewModel>
    {
        public override SingleFamilyAddressViewModel AddressViewModel { get; set; }
    }
}
namespace Site.ViewModels.EasyEnrol.AbstractClasses
{
公共抽象类HomeViewModel,其中T:HomeAddressViewModel
{
公共抽象T AddressViewModel{get;set;}
}
}
命名空间Site.ViewModels.EasyEnrol.Addresses
{
公共类HomeAddressViewModel
{
}
}
命名空间Site.ViewModels.EasyEnrol.Addresses
{
公共类SingleFamilyAddressViewModel:HomeAddressViewModel
{
}
}
命名空间Site.ViewModels.EasyEnrol.Enrolments
{
公共类SingleFamilyEnrollmentViewModel:HomeViewModel
{
公共重写SingleFamilyAddressViewModel AddressViewModel{get;set;}
}
}
对我来说似乎很明显,我在某种程度上违反了约束,但我不知道怎么做?它是SingleFamilyAddressViewModel中HomeAddressViewModel的继承吗?任何帮助都将不胜感激。谢谢

Edit:我在编译时收到的实际错误消息是error“类型“Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel”不能用作泛型类型或方法“Site.ViewModels.EasyEnrol.AbstractClasses.HomeViewModel”中的类型参数“T”。没有从“Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel”到“Site.ViewModels.EasyEnrol.AbstractClasses.HomeAddressViewModel”的隐式引用转换。“


编辑2:我已经包含了名称空间,并对重复的类名进行了三次检查。我已经取出了这段代码并创建了一个单独的项目,当然代码的编译方式与以前一样,所以我不确定为什么升级到mvc 4会改变这一点。

所以我不知道是什么原因导致了问题,因为所有人都认为这段代码是错误的我最终从源代码管理恢复到昨天的一些代码(主要是bin和一些JS更改)这似乎解决了这个问题。我没有足够的代表投票,但感谢Jon Skeet花时间帮助我调查此事。我非常感谢您抽出时间。

请显示问题中的确切错误消息,以及产生错误的代码。您提供的代码到目前为止编译没有任何错误。我在这里s我收到的实际错误消息。类型“Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel”不能用作泛型类型或方法“Site.ViewModels.EasyEnrol.AbstractClasses.HomeViewModel”中的类型参数“T”。没有从“Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressVi”进行隐式引用转换ewModel“to”Site.ViewModels.EasyEnrol.AbstractClasses.HomeAddressViewModel”。这是生成错误的代码。它没有编译。我去掉了不相关的属性和字段。我不明白为什么它没有编译。在这个问题中,请…与代码一起。抱歉。我编辑了我的帖子以包含错误消息。谢谢。那么您提供的代码不是您正在使用的代码。您提供的代码工作正常。我建议您检查
SingleFamilyAddressViewModel
是否真正源自
Site.ViewModels.EasyEnrol.AbstractClasses.HomeAddressViewModel