基于花药价值的动态 属性 类型 属性
Dynamic property type based on value of anther property
如何根据另一个 属性 的值最好地实现具有动态数据类型的 属性?
我有一个 class 用于 Order
具有两个属性 OrderType
(枚举)和 OrderStatus
(枚举)
问题是 OrderStatus
的数据类型根据值 OrderType
的不同而不同
public class Order
{
// Enums
public enum OrderTypes { Restaurant, Grocery, Wallet }
public enum RestaurantOrderStatus { OrderPlaced, Pending, Preparing, ReadyForPickup OnTheWay, Cancelled }
public enum GroceryOrderStatus { OrderPlaced, Enqueued, Preparing, OnTheWay, Cancelled, Returning }
public enum WalletOrderStatus { OrderPlaced, OnTheWay, Cancelled }
// Properties
public OrderTypes OrderType { get; set; }
public OrderStatuses OrderStatus { get; set; } // How to set a dynamic data type (different enum)?
public int Id { get; set; }
}
执行此操作的最佳方法是什么?
使用通用类型?
-
我会实现一个通用类型。
public class Order<T> where T : Enum
{
public Enums.OrderTypes OrderType { get; set; }
public T OrderStatus { get; set; }
public int Id { get; set; }
}
public class Enums
{
public enum OrderTypes { Restaurant, Grocery, Wallet }
public enum RestaurantOrderStatus { OrderPlaced, Pending, Preparing, ReadyForPickup, OnTheWay, Cancelled }
public enum GroceryOrderStatus { OrderPlaced, Enqueued, Preparing, OnTheWay, Cancelled, Returning }
public enum WalletOrderStatus { OrderPlaced, OnTheWay, Cancelled }
}
public class UseCase
{
public static void UseLike()
{
Enums.OrderTypes orderType = Enums.OrderTypes.Grocery;
switch (orderType)
{
case Enums.OrderTypes.Restaurant:
_ = new Order<Enums.RestaurantOrderStatus>();
break;
case Enums.OrderTypes.Grocery:
_ = new Order<Enums.GroceryOrderStatus>();
break;
case Enums.OrderTypes.Wallet:
_ = new Order<Enums.WalletOrderStatus>();
break;
}
}
}
如何根据另一个 属性 的值最好地实现具有动态数据类型的 属性?
我有一个 class 用于 Order
具有两个属性 OrderType
(枚举)和 OrderStatus
(枚举)
问题是 OrderStatus
的数据类型根据值 OrderType
public class Order
{
// Enums
public enum OrderTypes { Restaurant, Grocery, Wallet }
public enum RestaurantOrderStatus { OrderPlaced, Pending, Preparing, ReadyForPickup OnTheWay, Cancelled }
public enum GroceryOrderStatus { OrderPlaced, Enqueued, Preparing, OnTheWay, Cancelled, Returning }
public enum WalletOrderStatus { OrderPlaced, OnTheWay, Cancelled }
// Properties
public OrderTypes OrderType { get; set; }
public OrderStatuses OrderStatus { get; set; } // How to set a dynamic data type (different enum)?
public int Id { get; set; }
}
执行此操作的最佳方法是什么?
使用通用类型?
我会实现一个通用类型。
public class Order<T> where T : Enum
{
public Enums.OrderTypes OrderType { get; set; }
public T OrderStatus { get; set; }
public int Id { get; set; }
}
public class Enums
{
public enum OrderTypes { Restaurant, Grocery, Wallet }
public enum RestaurantOrderStatus { OrderPlaced, Pending, Preparing, ReadyForPickup, OnTheWay, Cancelled }
public enum GroceryOrderStatus { OrderPlaced, Enqueued, Preparing, OnTheWay, Cancelled, Returning }
public enum WalletOrderStatus { OrderPlaced, OnTheWay, Cancelled }
}
public class UseCase
{
public static void UseLike()
{
Enums.OrderTypes orderType = Enums.OrderTypes.Grocery;
switch (orderType)
{
case Enums.OrderTypes.Restaurant:
_ = new Order<Enums.RestaurantOrderStatus>();
break;
case Enums.OrderTypes.Grocery:
_ = new Order<Enums.GroceryOrderStatus>();
break;
case Enums.OrderTypes.Wallet:
_ = new Order<Enums.WalletOrderStatus>();
break;
}
}
}