¿Por qué no se puede vincular el modelo de mi vista con mi ViewModel genérico que implementa una interfaz? (ASP.NET MVC 3)

Estoy intentando pasar mi Vista una instancia del siguiente ViewModel:

public class CompanyListViewModel<T> where T : ICompany
{
    public IEnumerable<T> CompanyList;
    public IEnumerable<string> StateList;

    public CompanyListViewModel(IEnumerable<T> list)
    {
        CompanyList = list;
    }
}

Where the View toma algo así:

@model Project.ViewModels.CompanyViewModels.CompanyListViewModel<ICompany>

Y mi código de controlador pasa algo como esto a la Vista:

CompanyListViewModel<ICompanyInListAsUser> model = new CompanyListViewModel<ICompanyInListAsUser>(_companyService.FilterByCompanyState(state));

Donde elICompanyInListAsUsera interfaz @ implementa laICompany interfaz. Los_companyService.FilterByCompanyState(state)) class devuelve unIEnumerable deCompany objetos, que a su vez implementan elICompanyInListAsUser interfaz

Por alguna razón, recibo el siguiente error al acceder a mi Vista:

The model item passed into the dictionary is of type 'Project.ViewModels.CompanyViewModels.CompanyListViewModel`1[Project.ViewModels.CompanyViewModels.ICompanyInListAsUser]', but this dictionary requires a model item of type 'Project.ViewModels.CompanyViewModels.CompanyListViewModel`1[Project.ViewModels.CompanyViewModels.ICompany]'.

¿Por qué recibo este error si elICompanyInListAsUser interfazhac de hecho implementarICompany?

Cualquier ayuda sería muy apreciada.

Gracias

EDITA

También quería decir lo que estoy tratando de lograr aquí. Digamos que tengo varios niveles de acceso en mi aplicación (ej. Usuario y Administrador). ¿Qué pasa si tengo una propiedad en miCompany objeto que es solo de administrador? Bueno, en ese caso, miICompanyInListAsUser incluiría todas las propiedades que quería como columnas en la listaexcept la propiedad solo para administradores.

Así que mi plan aquí era pasar comoViewModel unIEnumerable de la interfaz base de la compañía y desde el controlador (o capa de servicio) puebla selectivamente laIEnumerable con una instancia de una de estas interfaces de "filtro" comoICompanyInListAsUser.

spero que esto tenga sentido, avíseme si necesito más detalles.

Respuestas a la pregunta(2)

Su respuesta a la pregunta