У меня есть базовый класс, который принимает тип в качестве аргумента конструктора, и два производных класса, которые наследуются от этого базового класса.У меня также есть интерфейс этого базового класса, который я использую в других местах.
Когда я вызываю базовый метод "FormatValue", передавая различные типы в качестве параметров, я всегда получаю один и тот же результат (это вызовметод в одном из классов, игнорируя мой параметр типа).
Что я делаю не так?
public interface IFormatService
{
string FormatValue(object value);
}
public abstract class FormatService : IFormatService
{
protected FormatService(Type type)
{ }
public abstract string FormatValue(object value);
}
public static class Program
{
private static void Main(string[] args)
{
var serviceProvider = new ServiceCollection()
.AddSingleton<IFormatService, CurrencyFormat>()
.AddSingleton<IFormatService, DateTimeFormat>()
.BuildServiceProvider();
var formatService = serviceProvider.GetService<IFormatService>();
Console.WriteLine(formatService.FormatValue(DateTime.Now));
Console.WriteLine(formatService.FormatValue(200));
Console.ReadLine();
}
}
public class CurrencyFormat : FormatService
{
public CurrencyFormat() : base(typeof(decimal))
{
}
public override string FormatValue(object value) => "CurrencyFormatter";
}
public class DateTimeFormat : FormatService
{
public DateTimeFormat() : base(typeof(DateTime))
{
}
public override string FormatValue(object value) => "DateTimeFormatter";
}
Текущий результат:
DateTimeFormatter
DateTimeFormatter
Ожидаемый результат:
DateTimeFormatter
CurrencyFormatter