ПРИМЕЧАНИЕ : я собираюсь упростить структуру и содержимое класса, на самом деле он намного сложнее, но остальная часть не является необходимой для рассматриваемой проблемы.
У меня следующая (упрощенная) структура классов:
public abstract class Config
{
// A number of abstract parameters and special abstract methods
}
public class GenericConfig<T> : Config
{
private DataType configDataType;
public DataType ConfigDataType
{
get { /* A get function */ }
set { /* A set function */ }
}
public T InitialValue { get; set; }
public T MinValue { get; set; }
public T MaxValue { get; set; }
// Overridden parameters and methods
}
public enum DataType
{
Int,
Bool,
Float,
String,
DateTime
}
Когда я создаю экземпляр объекта Config
, он выглядит так:
Config configInstance = new GenericConfig<int>(..., ConfigDataType=0, ...)
Что я хотел бы сделать, так это привести тип int к float или что-то еще из вызова метода. Что-то вроде следующего (я бы предпочел следовать своим типам перечислений):
configInstance.CastType("Float")
OR configInstance.CastType(2)
, что даст мне эквивалент:
Config configInstance = new GenericConfig<float>(..., ConfigDataType=2, ...)
Возможно ли это хотя бы отдаленно или этого следует избегать?