У меня возникла проблема с некоторым кодом, который использовался для компиляции, а теперь нет (после обновления до MVC 4). Код находится в классе, который наследуется от абстрактного базового класса с некоторыми дженериками. Я искал все, и все вопросы и ответы близки к тому, что я пытаюсь сделать, но не к матчу, поэтому, пожалуйста, дайте мне знать, если я просто полностью сосать в Google или что. Где-то здесь основная реализация, с которой я работаю.C# Generic Abstract Class - Нет никакого неявного преобразования ссылок
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; }
}
}
Мне кажется очевидным, что я как-то нарушаю ограничение, но я не понимаю, как это сделать? Это наследование HomeAddressViewModel в SingleFamilyAddressViewModel? Любая помощь будет принята с благодарностью. Благодарю.
Edit: Действительное сообщение об ошибке я получаю во время компиляции является ошибка «Тип„Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel“не может быть использован в качестве параметра типа„T“в«Site.ViewModels универсального типа или метода .EasyEnrol.AbstractClasses.HomeViewModel '. Нет никакого неявного преобразования ссылок из' Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel 'в' Site.ViewModels.EasyEnrol.AbstractClasses.HomeAddressViewModel '. "
Редактирование 2: Я включил пространства имен и проверил тройную проверку на наличие дубликатов имен классов. Я взял этот код и создал отдельный проект, и, конечно, компиляция кода, как и раньше, я не уверен, почему обновление до mvc 4 изменило бы это.
Пожалуйста, сообщите точное сообщение об ошибке в вашем вопросе и код, который генерирует эту ошибку. Код, который вы предоставили до сих пор, компилируется без каких-либо ошибок. –
Вот фактическое сообщение об ошибке, которое я получаю. Тип «Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel» не может использоваться как параметр типа «T» в общем типе или методе «Site.ViewModels.EasyEnrol.AbstractClasses.HomeViewModel». Нет никакого неявного преобразования ссылок из «Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel» в «Site.ViewModels.EasyEnrol.AbstractClasses.HomeAddressViewModel». Это код, который генерирует ошибку. Он не компилируется. Я удалил ненужные свойства и поля. Я не понимаю, почему это не компиляция. –
В вопросе, пожалуйста ... вместе с кодом. –