An Avanade Blogging Community

Welcome to An Avanade Blogging Community Sign in | Join | Help
in Search

El Bruno

[EntLib] Migrando Applications Blocks de EntLib 2.0 a EntLib 3.1

Buenas

si has extendido las capacidades iniciales de Enterprise Library 2.0 y quieres migrar las mismas a Enterprise Library 3.1, seguramente te encuentres con el siguiente error despues de actualizar las referencias.

Excepción

------ Build started: Project: XX, Configuration: Debug Any CPU ------ ... ...\CategorySourceSerializableConfigurationSection.cs(31,12): error CS0305: Using the generic type 'Microsoft.Practices.EnterpriseLibrary.Common.Configuration.NameTypeConfigurationElementCollection<T,TCustomElementData>' requires '2' type arguments ... Compile complete -- 5 errors, 0 warnings ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

Nota: en mi infinita ignorancia y acostumbrado a la actualización de 1.1 a 2.0, pensé que simplemente actualizando las referencias del proyecto / solución a Enterprise Library 3.1 todo funcionaba pero una vez más la realidad me puso a trabajar un poco más de la cuenta.

 

Pues bien, la excepción en tiempo de compilación hace referencia a

Microsoft.Practices.EnterpriseLibrary.Common.Configuration.NameTypeConfigurationElementCollection

en la línea 6 del siguiente fragmento de código:

1 /// <summary> 2 /// Gets the CategorySource providers. 3 /// </summary> 4 /// <value>The CategorySource providers.</value> 5 [ConfigurationProperty(CategorySourceSerializableConfigurationSection.providersProperty_)] 6 public NameTypeConfigurationElementCollection<CategorySourceConfigurationElement> 7 CategorySourceProviders 8 { 9 get 10 { 11 return (NameTypeConfigurationElementCollection 12 <CategorySourceConfigurationElement>) 13 this[CategorySourceSerializableConfigurationSection.providersProperty_]; 14 } 15 }

Cómo a esta información no la tenía muy fresca en mi memoria me tuve que poner a leer (y aprender !!!) de nuevo el funcionamiento del namespace Microsoft.Practices.EnterpriseLibrary.Common.Configuration y después de una serie de pruebas solucioné el problema agregando el 2do argumento que también hace referencia al mismo tipo que el 1ro. Por ejemplo:

1 /// <summary> 2 /// Gets the CategorySource providers. 3 /// </summary> 4 /// <value>The CategorySource providers.</value> 5 [ConfigurationProperty(CategorySourceSerializableConfigurationSection.providersProperty_)] 6 public NameTypeConfigurationElementCollection<CategorySourceConfigurationElement, CategorySourceConfigurationElement> 7 CategorySourceProviders 8 { 9 get 10 { 11 return (NameTypeConfigurationElementCollection 12 <CategorySourceConfigurationElement>) 13 this[CategorySourceSerializableConfigurationSection.providersProperty_]; 14 } 15 }

La base de este comportamiento es que el 1er parámetro define el tipo de NameTypeConfigurationElement que contiene la colección, y el 2do parámetro es el tipo para la configuración personalizada de la colección que se implementa para el Application Block. (en versiones anteriores no era necesaria esta distinción)

Finalmente viernes a la tarde problema solucionado !!!!

 

Saludos @ Here

El Bruno

Crossposting from ElBruno.com
Published Friday, November 23, 2007 3:01 PM by elbruno
Filed Under: ,

Comments

No Comments
Anonymous comments are disabled