[英]Strategy pattern c#, how to check if passed enum value match any of possible parameters, so strategy would be evaluated
公共 TeklaViewTypes ViewType => TeklaViewTypes.FrontView | TeklaViewTypes.TopView | TeklaViewTypes.BottomView;
傳遞的 ViewType 應該檢查它是否等於任何 TeklaViewTypes.FrontView | TeklaViewTypes.TopView | TeklaViewTypes.BottomView。
到目前為止,它僅適用於一種可能的選項。
您需要將 TeklaViewTypes 設為二進制 ('flags') 枚舉,然后您只需要使用 & ,如下面的代碼所示。 關鍵是if ((test & ViewType) == test)
。
[Flags]
enum TeklaViewTypes
{
FrontView = 1,
TopView = 2,
BottomView = 4,
InvalidView = 8
}
internal class Program
{
static void Main(string[] args)
{
new Program().Run();
}
private void Run()
{
TeklaViewTypes[] testArray = {
TeklaViewTypes.FrontView, // Pass
TeklaViewTypes.TopView, // Pass
TeklaViewTypes.BottomView, // Pass
TeklaViewTypes.InvalidView, // Fail
};
foreach (TeklaViewTypes test in testArray)
CheckViewType(test);
}
private void CheckViewType(TeklaViewTypes test)
{
if ((test & ViewType) == test)
Console.WriteLine($"{test}: Pass");
else
Console.WriteLine($"{test}: Fail");
}
public TeklaViewTypes ViewType =>
TeklaViewTypes.FrontView | TeklaViewTypes.TopView | TeklaViewTypes.BottomView;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.