Мне бы очень понравился общий числовой тип, как второй тип типичного типа Func<TInput, THere, TResult>
, который приведен ниже, поэтому я могу предоставить целое или двойное или десятичное число как и когда мне нравится.Есть ли общий числовой тип в C#?
var _resultSelectors = new Dictionary<string, Func<DateTime, /*here*/ double, DateTime>>();
// so I can do
_resultSelector.Add("foo", (DateTime dt, int x) => ...);
_resultSelector.Add("bar", (DateTime dt, double d) => ...);
_resultSelector.Add("gar", (DateTime dt, float f) => ...);
_resultSelector.Add("har", (DateTime dt, decimal d) => ...);
Короткие:
- делает свой собственный тип; или
- с использованием объекта и бокса типа значения и его распаковки; или
- Использование
dynamic
ключевого слова,
Есть правильный способ сделать это в C#?
Я думаю, что Java имеет класс Number
, который, вероятно, соответствует моим требованиям, но мне было интересно, есть ли у C# что-то подобное.
Я предполагаю, что на C# нет такой вещи, но я думал, что попробую, чтобы быть уверенным.
Если у вас может быть все 4, я бы предложил вам выбрать один из «double» или «decimal» (в зависимости от вашего варианта использования, то есть с плавающей точкой) и преобразовать остальное в это. –
@CharlesMager Это хорошая идея. –
Нет никакого общего интерфейса, но у вас все еще будет проблема поиска правильных функций для вызова на основе типа времени выполнения. Откуда берутся конкретные числовые значения? – Lee