2011-04-15 15 views
9

Soy consciente de que podemos acceder a los metadatos modelo usandoObtener metadatos del modelo de su nombre de la clase

var metaData = ModelMetadataProviders.Current.GetMetadataForType(() => Model, Model.GetType()); 

Lo que estoy buscando es una manera de acceder modelo de metadatos simplemente utilizando su nombre de la clase, sin su instancia (tal vez algo como ModelMetadataProviders.Current.GetMetadataForType (Model.GetType())). ¿Hay una manera fácil de lograr eso?

Respuesta

12

No necesita una instancia con el fin de acceder a los metadatos de un tipo:

var metaData = ModelMetadataProviders 
    .Current 
    .GetMetadataForType(null, typeof(SomeViewModel)); 

Y si todo lo que tiene es una cadena que representa el nombre del tipo que puede mostrarse el tipo de esta cadena:

var metaData = ModelMetadataProviders 
    .Current 
    .GetMetadataForType(null, Type.GetType("AppName.Models.MyViewModel")); 
+1

'Type.GetType ("AppName.Models.MyViewModel")' siempre devolverá un valor nulo, pero 'Type.GetType (" AppName.Models.MyViewModel, AppName, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null ")' devuelve el tipo correcto. ¡Gracias por el consejo! – Salamander2007

Cuestiones relacionadas