Pregunta

Tengo una aplicación MVC 4 existente que utiliza el ASPNETSQLPROFILEPROVIDER, configurado así:

<properties>
    <add name="MyTypeAs" 
         type="System.Collections.Generic.List`1[[My.Namespace.MyTypeA, My.Namespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]" serializeAs="Binary" />
</properties>

Ahora deseo actualizar el sistema (sin quitar los perfiles antiguos) como este:

<properties>
    <add name="MyTypeAs" 
         type="System.Collections.Generic.List`1[[My.Namespace.MyTypeA, My.Namespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]" serializeAs="Binary" />
    <add name="MyHashOfInts" 
         type="System.Collections.Generic.HashSet`1[System.Int32]" serializeAs="Binary" />
</properties>

No he tenido problemas para agregar propiedades adicionales en proyectos anteriores. Si los datos serializados fueron de una versión anterior donde no se definió la propiedad adicional, cargando esa propiedad prendió el valor predeterminado (t). Sin embargo, con este cambio, cuando mi controlador ejecuta esta línea:

List<MyTypeA> myTypeAs = 
     (List<MyTypeA>)HttpContext.Current.Profile.GetPropertyValue("MyTypeA");

Se lanza una excepción:

Intento de cargar el tipo de esta propiedad resultó en el siguiente error: No se pudo cargar el tipo 'System.Collections.Genic.Hasset`1 [System.int32]'.

Observe que estoy haciendo referencia a una propiedad de tipo List<MyTypeA>, pero la excepción dice que no puede cargar el tipo

System.collections.genic.hashset`1 [System.int32].

¿Cometí un error en la forma en que especifiqué el tipo en web.config? ¿Hay otra causa?

Todo esto está sucediendo en Visual Studio 2010 SP1 con el tiempo de ejecución .NET 4 seleccionado.

¿Fue útil?

Solución

Resulta que, diferente del List<T>, HashSet<T> requiere un nombre de ensamblaje completamente calificado.

System.collections.genic.hashset`1 [[System.int32]], System.core, versión= 4.0.0.0, cultura= neutral, publickeytoken= B77A5C561934E089

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top