Вы можете иметь словарь как:
public static readonly Dictionary<EFileTag, EHgFileTag> dict = new Dictionary<EFileTag, EHgFileTag>
{
{ EFileTag.Clean, EHgFileTag.Clean },
{ EFileTag.Modified, EHgFileTag.Modified }
}
Теперь вы можете эффективно получить одно перечисление, передавая другое.
var tag = dict[EFileTag.Clean];
//tag would be EHgFileTag.Clean
//you can get the char now like you did in your example
var hgft = (char)tag;
//hgft would be 'C'
Edit:
Я всегда думал, что использование перечислений таким образом не имеет особого смысла. Теперь, когда вы попросили добавить еще одно перечисление в микс, я решил изменить концепцию от перечислений.
public enum EFileTag
{
Clean,
Modified
}
public class FileTag
{
public EFileTag EFileTag { get; private set; }
public char EHgFileTag { get; private set; }
public char EGitFileTag { get; private set; }
public FileTag(EFileTag eFileTag, char eHgFileTag, char eGitFileTag)
{
EFileTag = eFileTag;
EHgFileTag = eHgFileTag;
EGitFileTag = eGitFileTag;
}
}
public class SomeClass
{
public static readonly Dictionary<EFileTag, FileTag> tags = new Dictionary<EFileTag, FileTag>
{
{EFileTag.Clean, new FileTag(EFileTag.Clean, 'C', ' ') },
{EFileTag.Modified, new FileTag(EFileTag.Modified, 'M', 'M') },
};
var tag = tags[EFileTag.Clean];
//tag would be of class FileTag
var hgft = tag.EHgFileTag;
//hgft would be 'C'
var gft= tag.EGitFileTag;
//gft would be ' '
}
Теперь у вас есть только одно перечисление, описывающее ваш основной тег файла, и к нему прикреплены символы, к которым вы хотите получить доступ. Это намного чище и лучше для понимания и обработки, чем наличие нескольких перечислений. В будущем я бы порекомендовал вам не использовать перечисления так, как вы это делали, так как на самом деле они не должны использоваться. Перечисления - это способ назвать перечисление только для понимания, а не способ передачи фактических значений.
Также, если вы хотите добавить еще один символ или что-то еще, вы можете легко это сделать.