2009-12-02 10 views
11

Aquí está mi problema: Tengo un objeto que hace referencia a una DLL. Me gustaría que otros objetos hagan referencia a mi objeto, sin tener que incluir también una referencia a la DLL.C#: Envolviendo un Enum dentro de otro (es decir, duplicando otra enumeración/copiándolo ...)

Esto está bien en su mayor parte, excepto que hay una enumeración en la DLL que me gustaría replicar. Podría escribir la enumeración línea por línea, pero me pregunto si hay una forma mejor de hacerlo.

es decir.

Digamos que el DLL el mundo tiene la siguiente enumeración:

public enum dllEnum 
{ 
    value1, 
    value2, 
    value3 
} 

que podía hacer lo siguiente:

public enum myEnum 
{ 
    value1, 
    value2, 
    value3 
} 

o mejor aún:

public enum myEnum 
{ 
    value1 = dllEnum.value1, 
    value2 = dllEnum.value2, 
    value3 = dllEnum.value3 
} 

Pero cada uno de estos casos tiene yo escribiendo toda la enumeración yo mismo. Prefiero ser capaz de envolver toda la enumeración como la mía, conservando los índices de la enumeración original.

Algo a lo largo de las líneas de:

public enum myEnum 
{ 
    Enum.GetValues(dllEnum) 
} 

Respuesta

0

http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/ddedaf59-fb36-45cd-8062-446fa92d8f68

Este artículo tiene algunos ejemplos que pueden ayudarle Acceda a una solución mediante la cual genera dinámicamente su enumeración y compila en tiempo de ejecución. He hecho esto para una función tipo 'eval' en VB.Net, pero no lo he hecho para una enumeración.

Esto no permitiría la verificación de los valores en tiempo de compilación, por lo que estaría en un mundo de dolor en muchos sentidos. Con el DLR en .NET 4.0, me imagino que tendrías más flexibilidad (aunque admito que no he leído los detalles de la próxima versión del framework.)

+0

esto es más trabajo que simplemente mapear el Enum usted mismo ... no creo necesariamente que valga la pena. –

Cuestiones relacionadas