我有一个具有枚举属性和 bool 属性的类,基于它调用具有特定参数的特定方法。我对 enum 使用 switch 语句,在 switch 的每个 case 中使用 if 作为 bool 值。这是一个很长的 list ,我觉得不是最优雅的解决方案。任何人都有更优雅或更简单的方法来实现这一点?
switch (ReadDecision)
{
case ReadDecisions.ReadNext:
{
if (UseTimeout)
{
Message = queue.Receive(Timeout);
}
else
{
Message = queue.Receive();
}
break;
}
case ReadDecisions.PeekNext:
{
if (UseTimeout)
{
Message = queue.Peek(Timeout);
}
else
{
Message = queue.Peek();
}
break;
}
case ReadDecisions.ReadMessageId:
{
if (UseTimeout)
{
Message = queue.ReceiveById(Id, Timeout);
}
else
{
Message = queue.ReceiveById(Id);
}
break;
}
case ReadDecisions.PeekMessageId:
{
if (UseTimeout)
{
Message = queue.PeekById(Id, Timeout);
}
else
{
Message = queue.PeekById(Id);
}
break;
}
case ReadDecisions.ReadCorrelationId:
{
if (UseTimeout)
{
Message = queue.ReceiveByCorrelationId(Id, Timeout);
}
else
{
Message = queue.ReceiveByCorrelationId(Id);
}
break;
}
case ReadDecisions.PeekCorrelationId:
{
if (UseTimeout)
{
Message = queue.PeekByCorrelationId(Id, Timeout);
}
else
{
Message = queue.PeekByCorrelationId(Id);
}
break;
}
default:
{
throw new Exception("Unknown ReadDecisions provided");
}
}
最佳答案
一个经常使用的约定是超时为零意味着没有超时。也许您可以删除 UseTimeout(属性?)并使用零值代替。那会消除一些东西。
关于C# 枚举和 bool 值 - 寻找更优雅的方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/468541/