我需要映射来自外部源的状态值:
所以,我有时需要将内部状态表示为整数或字符串。我想我应该在一个函数中执行此操作,因为无论dataType如何,状态都表示相同的事情。
我的问题是,我是否创建了一个将外部源状态作为arg的函数,然后返回一个键值对?我不想创建2个函数。
的Ta,
瑜珈
答案 0 :(得分:1)
您的数据在逻辑上是两种不同的enum
类型,它们将相同的值映射到不同的整数:
public enum ExternalSourceStatus
{
NEW = 1,
PROCESSED = 5,
}
public enum InternalSourceStatus
{
NEW = 2,
PROCESSED = 7,
}
然后,您可以创建字典以将外部状态映射到内部状态:
var statusMap = new Dictionary<ExternalSourceStatus, InternalSourceStatus>()
{
{ExternalSourceStatus.NEW, InternalSourceStatus.NEW},
{ExternalSourceStatus.PROCESSED, InternalSourceStatus.PROCESSED},
};
(您可以在运行时构建此词典,如果您的状态真的大;对于足够小的枚举,可能更容易自己构建它。)
答案 1 :(得分:0)
首先创建一个代表内部状态的类
public class InternalStatus
{
public int ID { get; set; }
public string Name { get; set; }
}
然后您可以通过将外部ID作为键
来构建字典private Dictionary<int, InternalStatus> _map = new Dictionary<int, InternalStatus>();
添加映射
_map.Add(1, new InternalStatus { ID = 2, Name = "NEW" });
_map.Add(5, new InternalStatus { ID = 7, Name = "PROCESSED" });
现在你可以查找这样的映射:
int externalStatusID = 5;
InternalStatus internalStatus;
if (_map.TryGetValue(externalStatusID, out internalStatus)) {
Console.WriteLine("Internal status ID = {0}, Name = {1}",
internalStatus.ID, internalStatus.Name);
} else {
Console.WriteLine("Status not found!");
}