我必須從兩個類似的解決方案合併C#代碼,但我有一些問題與枚舉。 該項目使用.net2.0,我也必須使用它以及。 這些項目有一個包含具有相同的名稱,但一些差異枚舉一些常見的類:C#代碼與枚舉稍有區別合併
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
}
}
也有這個「枚舉」像許多其他用途:
tmpChild.Type == typeof(LETTERS);
this._data.LTR = (LETTERS)valueListUpDown_LTS.Value;
AddData(new SFunc(0,typeof(LETTERS), LETTERS.A));
LETTERS letters = LETTERS.a;
第二個項目是相同的但枚舉看起來是這樣的:
public enum LETTERS
{
a = 0,
b = 1,
c = 2
}
有這些枚舉的許多各種用途中的代碼和代碼中有使用該組件作爲ref許多項目ference。 我想知道什麼是合併這些解決方案的最佳方法。 我想到了一種根據字符串返回枚舉類型的方法,但不知道如何在所有情況下實現或使用返回的類型。
請諮詢
---------- ----------編輯
一些其他方面的限制,我已經是:
我可以」 t使用可空類型或更改枚舉值(我可以更改它們的名稱) ,因爲在某些情況下,有序列化程序會將它從文件寫入\並讀取它。
我想用這樣的方法:
public static Type LETTERS(string letters_type)
{
if (letters_type == "type_a")
return typeof(LETTERS);
return typeof(LETTERS_B);
}
但不知道如何在每一種情況下 投和使用類型爲枚舉在運行時,我知道我應該使用哪個枚舉的版本,這就是爲什麼這種方法可以幫助。
感謝
「合併」的結果會是怎樣的? – ntohl
我不知道任何超級簡單和/或標準的方式來處理這個。您可以保留兩個相互衝突的枚舉並通過名稱空間將它們分開,然後更新所有引用以使用完全限定名稱,或者可以合併它們並根據需要手動更新引用以正確使用合併的枚舉。在嘗試創建某種「參數化多態枚舉」之前,我會推薦使用這兩種方法中的任何一種,這不會是標準的C#枚舉。 – SlimsGhost
非常感謝,不同的命名空間可能是一個選項。 我編輯了我的問題,並添加了一些約束,我有 –