我在使用枚举时遇到问题。假设我已经定义了枚举,它命名了 DeviceType,外部客户端使用它来指定他们想要从我的设备容器中使用的设备。但是由于枚举不可扩展,如果不更新我的库并让所有用户更新到新版本,我就无法拥有新设备。我正在寻找尽可能简单的解决方案来解决这个问题。我不想使用属性或任何其他 .NET “作弊”好东西。
public class Program
{
private static List<IDevice> devices;
public static void Main(String[] args)
{
devices = new List<IDevice>()
{
new NetworkDevice()
};
IEnumerable<IDevice> currentDevices = GetDevices(DeviceType.Network);
IEnumerable<IDevice> newDevices = GetDevices(DeviceType.NewNetwork); // Will not work, unless client updates my library to get newly added enum types
}
private static IEnumerable<IDevice> GetDevices(DeviceType type)
{
return devices.Where(device => device.Type == type);
}
}
public enum DeviceType
{
Network
}
public interface IDevice
{
DeviceType Type { get; }
}
public class NetworkDevice : IDevice
{
public DeviceType Type
{
get
{
return DeviceType.Network;
}
}
}