dynamically create c# generics collections

create class dynamically c#



IDictionary<string, string> versus Dictionary<string, string> (3)

¿Cuál es el valor de usar IDictionary aquí?


El valor de usar una interfaz siempre es el mismo: no es necesario cambiar el código del cliente cuando se cambia a otra implementación de back-end.

Tenga en cuenta que el perfil de su código más tarde muestra que una implementación de tabla hash (utilizada en la clase Dictionary ) no es adecuada para su tarea y que un árbol de búsqueda binaria funcionaría mejor. Si ha codificado a una interfaz, cambiar la implementación es sencillo. Sin embargo, si has usado una clase concreta, tienes que cambiar mucho más código en muchos lugares más. => Esto cuesta tiempo y dinero.


IDictionary permite un acoplamiento más flexible.

Digamos que tienes un método como este:

void DoSomething(IDictionary<string, string> d) { //... }

Puedes usarlo así:

Dictionary<string, string> a = new Dictionary<string, string>(); SortedDictionary<string, string> b = new SortedDictionary<string, string>(); DoSomething(a); DoSomething(b);


En función de su pregunta anterior, Class heredará el dictionary<string, IFoo> genérico dictionary<string, IFoo> e Interface y la discusión en las respuestas, supongo que usted preguntará más acerca de heredar en lugar de usar.

La implementación desde el diccionario está bien si está contento con la forma en que se implementa el diccionario. Si quiere cambiar algo, entonces implementar IDictionary es mejor.

En mi humilde opinión, si vas a cubrir un miembro existente con ''nuevo'', entonces es mejor implementar la interfaz en lugar de heredar de la clase original.