Czy istnieje sposób radzenia sobie z tym bez niestandardowego wiązania modelu?ASP.NET MVC 4 ViewModel z interfejsem podrzędnym
public class MyViewModel {
public string UserId { get; set; }
public IJob Job { get; set; }
}
public interface IJob {
public long Id { get; set; }
public string CompanyName { get; set; }
}
public class FullTimeJob : IJob {
// omitted for brevity
}
public class Internship : IJob {
// omitted for brevity
}
Problem Mam to pojawia się błąd w domyślnej spoiwa modelu, ponieważ nie rozumieją który wdrożenie IJob instancji. Po utworzeniu MyViewModel ustawiłem instancję klasy FullTimeJob w jej właściwości zadania. Chyba ASP.NET nie może zachować typu implementacji?
Jakie jest najlepsze rozwiązanie w tym zakresie?
Chcę móc utrzymać hierarchię obiektów, więc zdecydowanie chcę * uniknąć * umieszczania pól związanych z pracą bezpośrednio na modelu widoku. Jeśli to robię, ViewModel nic mi nie kupuje. –
Tak, zrobiłem to w niestandardowym segregatorze, ale miałem nadzieję, że będzie mniej niestandardowa odpowiedź. –
Możesz uczynić swój ViewModel generycznym czymś w rodzaju 'class MyViewModel gdzie T: IJob, new()' i w konstruktorze możesz utworzyć instancję niestandardowego Job Type 'Job = new T();' ale nadal zależy to od konkretnego typu Job. –