2016-07-25 4 views
-2

2つの同様のソリューションからC#コードをマージする必要がありますが、enumの問題があります。 このプロジェクトでは.net2.0を使用しています。私はそれをとしても使用しなければなりません。 プロジェクトは、同じ名前を持つ列挙型が含まれているいくつかの一般的なクラスが、いくつかの違いがあります:第二のプロジェクトが同一であるC#のコードと少し違いのあるenumとのマージ

tmpChild.Type == typeof(LETTERS); 

this._data.LTR = (LETTERS)valueListUpDown_LTS.Value; 

AddData(new SFunc(0,typeof(LETTERS), LETTERS.A)); 

LETTERS letters = LETTERS.a; 

:よう

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Net; 

namespace MyProject 
{ 
    public enum LETTERS 
    { 
     non = 0, 
     a = 1, 
     b = 2, 
     c = 3 
    } 

    public class MyClass 
    { 
    public int v = 0; 
    . 
    . 
    . 
    public LETTERS lt = 0; // my enum 
    } 
} 

は、この「列挙型」の他の多くの用途もあります。しかし、列挙型は次のようになります。

public enum LETTERS 
    {   
     a = 0, 
     b = 1, 
     c = 2 
    } 

ありコードでこれらの列挙型の多くの様々な用途があると、コードが参照としてこのアセンブリを使用する多くのプロジェクトを持っていますference。 私はこれらのソリューションをマージする最良の方法が何であるか知りたいと思います。 文字列に応じてenum型を返すメソッドについては考えていますが、すべての場合に返される型を実装する方法や使用する方法がわかりません。 「

私ができる:

----------編集----------

私がしているしているいくつかの他の制約をアドバイスしてくださいヌル入力可能な型を使用するか、列挙型の値を変更する(私は名前を変更することができる) 場合によっては、それをファイルから読み書きするシリアライザがあるためです。 、

 public static Type LETTERS(string letters_type) 
     { 
      if (letters_type == "type_a") 
       return typeof(LETTERS); 
      return typeof(LETTERS_B); 
    } 

しかし、私は、私が使用する必要があります列挙型のどのバージョンを知って実行時には、各々の場合 に列挙型としてキャストとタイプを使用する方法がわからない:

は、私はこのような方法を使って考えますそのような方法が助けになる理由です。

おかげ

+0

「マージされた」resoultはどのように見えますか? – ntohl

+0

これを処理するための超簡単かつ/または標準的な方法はわかりません。 2つの競合する列挙型を保持し、それらを名前空間で区切り、完全修飾名を使用するようにすべての参照を更新するか、結合し、必要に応じて手動で参照を更新して、マージした列挙を正しく使用できます。私はこれらのメソッドのいずれかを、標準のC#enumではない "パラメータ化された多相列挙型"を作成しようとする前にお勧めします。 – SlimsGhost

+0

多くのおかげで、異なる名前空間がオプションになる可能性があります。 私の質問を編集し、私が持っているいくつかの制約を追加しました –

答えて

3

あなたの主な目的は、2つのコードベースをマージし、重複を削除する場合、私は、まずコードベースをマージし、その後、プロジェクトの一つで列挙型のいずれかの名前を変更するReSharperのを使用することになり、私はすべてに代わります最初の列挙型を参照する2番目の列挙型への参照(「非」を含まないもの)を作成し、それらを「+1」します。

「マジック」の値ではなく、null可能な列挙型も考えられると思います。これが.net 2.0でも利用できるかどうかはわかりません。また、null可能な列挙型を使用するときは自動マッパーを使用することに注意してください。注意しないと値をゼロに設定できます。

+1

Resharperはソリューション全体の名前を変更する必要はありませんか?これはVisual Studioに組み込まれています。 –

+0

私はresharperがより徹底していると思います。 –

+0

多くのありがとう! 私は自分の質問を編集し、私が持っているいくつかの制約を加えました –

関連する問題