public interface ICanDoSomething
public interface ICanDoSomething<T>: ICanDoSomething
public class BoolHandler: ICanDoSomething<bool>
public BoolHandler(bool value) => Value = value;
public bool Value { get; set; }
Console.WriteLine("The bool value is " + Value);
public class FloatHandler : ICanDoSomething<float>
public FloatHandler(float value) => Value = value;
public float Value { get; set; }
Console.WriteLine("The float value is " + Value);
public class HandlerFactory
public ICanDoSomething? GetHandler(object value)
bool b => new BoolHandler(b),
float f => new FloatHandler(f),
static void Main(String[] args)
HandlerFactory factory = new();
ICanDoSomething? handler = factory.GetHandler(value);