2015-09-17 6 views
-2

У меня возникла проблема с некоторым кодом, который использовался для компиляции, а теперь нет (после обновления до 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 изменило бы это.

+1

Пожалуйста, сообщите точное сообщение об ошибке в вашем вопросе и код, который генерирует эту ошибку. Код, который вы предоставили до сих пор, компилируется без каких-либо ошибок. –

+0

Вот фактическое сообщение об ошибке, которое я получаю. Тип «Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel» не может использоваться как параметр типа «T» в общем типе или методе «Site.ViewModels.EasyEnrol.AbstractClasses.HomeViewModel ». Нет никакого неявного преобразования ссылок из «Site.ViewModels.EasyEnrol.Addresses.SingleFamilyAddressViewModel» в «Site.ViewModels.EasyEnrol.AbstractClasses.HomeAddressViewModel». Это код, который генерирует ошибку. Он не компилируется. Я удалил ненужные свойства и поля. Я не понимаю, почему это не компиляция. –

+0

В вопросе, пожалуйста ... вместе с кодом. –

ответ

0

Итак, я не знаю, что вызывало проблему, поскольку все учетные записи должны были скомпилировать код. Я закончил возврат из исходного кода в некоторый код со вчерашнего дня (в основном, bin и некоторые изменения JS), и это, похоже, устранило проблему. У меня нет достаточного количества голосов для голосования, но я благодарю Джона Скита за то, что вы нашли время, чтобы помочь мне разобраться в этом вопросе. Я очень ценю ваше время.

Смежные вопросы