2009-12-02 9 views
11

ここに私の問題があります:DLLを参照しているオブジェクトがあります。 DLL自体への参照を含めることなく、他のオブジェクトがオブジェクトを参照するようにしたいと思います。C#:別の列挙型の内部に1つの列挙型をラップしています(つまり別の列挙型をコピー/コピーしています...)

これは、ほとんどの場合、複製するDLLの列挙型を除いて問題ありません。行ごとに列挙型を書き出すことができましたが、これを行うより良い方法があるのだろうかと思います。

ie。

のは、DLLのは、以下のenum得たとしましょう:

public enum dllEnum 
{ 
    value1, 
    value2, 
    value3 
} 

を私は次のことを行うことができます:

public enum myEnum 
{ 
    value1, 
    value2, 
    value3 
} 

またはより良いまだ:

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

しかし、これらの例それぞれが持っています私は自分自身の列挙全体を書いています。私はむしろ、元のenumのインデックスを保持して、私自身のものとしてenum全体をラップすることができます。線に沿って

何か:ここに何を求めているの

public enum myEnum 
{ 
    Enum.GetValues(dllEnum) 
} 

答えて

0

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

この記事はあなたを助けるかもしれないいくつかの素晴らしい例があります列挙型を動的に生成し、それを実行時にコンパイルするソリューションに到達します。私はVB.Netの 'eval'型関数のためにこれを行ってきましたが、私は列挙型のためにそれをしていません。

これは、コンパイル時の値のチェックを許可しないため、そこではさまざまな方法で傷つくことになります。 .Net 4.0のDLRでは、あなたがもっとフレキシブルであると想像しています(私は、フレームワークの次のバージョンの詳細を読んでいません)。

+0

これは単純にEnumあなた自身...私は必ずしもその価値があるとは思わない。 –