using InABox.Core; namespace InABox.IPC { public abstract class RPCCommandHandler : IRPCCommandHandler where TSender : class { public TSender Sender { get; } public RPCCommandHandler(TSender sender) { Sender = sender ?? throw new ArgumentNullException(nameof(sender)); } public abstract TResult? Execute(TParameters? parameters); public String? Execute(String? parameters) { var props = Serialization.Deserialize(parameters); var result = Execute(props); return Serialization.Serialize(result); } } }