Я закончил с этим дизайном ... Мне нужно было иметь какую-то базу, которую я мог бы создать, прежде чем я узнаю, каким будет тип значения. Я не смог избежать проблем, связанных с этим подходом (много кастинга), используя дженерики, а также помешал мне иметь базу agnosti c. Хотелось бы увидеть, как повысить удобство использования интерфейса (если возможно) для этого сценария.
public class BaseThing
{
public string Id { get; set; }
public IValueConfig Configuration { get; set; }
public string CommonProp { get; set; }...
}
public interface IValueConfig
{
ValueType Type { get; }
}
public class RangeVal : IValueConfig
{
public ValueType Type => ValueType.Range;
public double Value { get; set; }
public string UniqueProp { get; set; }...
}
public class StateVal : IValueConfig
{
public ValueType Type => ValueType.State;
public string Value { get; set; }
public string UniqueProp { get; set; }...
}
public class BooleanVal : IValueConfig
{
public ValueType Type => ValueType.Boolean;
public bool Value { get; set; }
public string UniqueProp { get; set; }...
}
public enum ValueType
{
Range,
State,
Boolean
}