예제 #1
0
 public EntityHandler(
     IActiveHandler <TEntity> activateHandler,
     IAddHandler <TEntity> addHandler,
     IRemoveHandler <TKey> removeHandler)
 {
     ActivateHandler = activateHandler ?? throw new ArgumentNullException(nameof(activateHandler));
     AddHandler      = addHandler ?? throw new ArgumentNullException(nameof(addHandler));
     RemoveHandler   = removeHandler ?? throw new ArgumentNullException(nameof(removeHandler));
 }
    //  This method must require T to be IModel because IAddHandler<T> requires
    //  T to be IModel.
    public static void ValidateHandler <T>(IAddHandler <T> handler) where T : IModel
    {
        handler.GetData();
        var result = handler.Add();

        //  IModel inherits from IResult. Hence, anything that implements IModel
        //  must implement IResult. So this is an implicit cast, even though IResult
        //  is implemented explicitly.
        WriteResults(result);
    }