public ContentModelModuleBase(IDataTypeModule dataTypeModule,
                                      IContentTypeModuleBase contentTypeModule,
                                      Func <Tentity, string> aliasGetter,
                                      Action <TypedEventHandler <Tservice, MoveEventArgs <Tentity> >, SubscribeType> trashEventSubscriber,
                                      Action <TypedEventHandler <Tservice, DeleteEventArgs <Tentity> >, SubscribeType> deleteEventSubscriber,
                                      Action <TypedEventHandler <Tservice, NewEventArgs <Tentity> >, SubscribeType> createEventSubscriber,
                                      Action <TypedEventHandler <Tservice, SaveEventArgs <Tentity> >, SubscribeType> saveEventSubscriber,
                                      Action <TypedEventHandler <Tservice, MoveEventArgs <Tentity> >, SubscribeType> moveEventSubscriber,
                                      Action <TypedEventHandler <Tservice, CopyEventArgs <Tentity> >, SubscribeType> copyEventSubscriber,
                                      Action <TypedEventHandler <IPublishingStrategy, PublishEventArgs <Tentity> >, SubscribeType> publishEventSubscriber,
                                      Action <TypedEventHandler <IPublishingStrategy, PublishEventArgs <Tentity> >, SubscribeType> unpublishEventSubscriber)
        {
            _dataTypeModule    = dataTypeModule;
            _contentTypeModule = contentTypeModule;

            _eventHandler = new ModelEventHandler <Tservice, Tentity, T>(
                contentTypeModule,
                trashEventSubscriber,
                deleteEventSubscriber,
                createEventSubscriber,
                saveEventSubscriber,
                moveEventSubscriber,
                copyEventSubscriber,
                publishEventSubscriber,
                unpublishEventSubscriber,
                (x, y) => CreateInstanceFromContent(x, y),
                aliasGetter,
                (x, y, z) => MapModelToContent(x, y, z)
                );
        }
 public MemberModelModule(IDataTypeModule dataTypeModule, IMemberTypeModule memberTypeModule)
     : base(dataTypeModule,
            memberTypeModule,
            x => x.ContentType.Alias,
            (x, type) => { },                //trashing
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               MemberService.Deleting += x;
                           }
                           else
                           {
                               MemberService.Deleting -= x;
                           } },                                                                                                                          //deleting
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               MemberService.Created += x;
                           }
                           else
                           {
                               MemberService.Created -= x;
                           } },                                                                                                                        //creating
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               MemberService.Saving += x;
                           }
                           else
                           {
                               MemberService.Saving -= x;
                           } },              //saving
            (x, type) => { },                //moving
            (x, type) => { },                //copying
            (x, type) => { },                //publishing
            (x, type) => { },                //unpublishing
            (x, type) => { },                //trashed
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               MemberService.Deleted += x;
                           }
                           else
                           {
                               MemberService.Deleted -= x;
                           } },                                                                                                                        //deleted
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               MemberService.Saved += x;
                           }
                           else
                           {
                               MemberService.Saved -= x;
                           } },              //saved
            (x, type) => { },                //moved
            (x, type) => { },                //copied
            (x, type) => { },                //published
            (x, type) => { })                //unpublished
 {
     _dataTypeModule   = dataTypeModule;
     _memberTypeModule = memberTypeModule;
 }
 public PropertyModule(IDataTypeModule dataTypeModule, IDataTypeService dataTypeService)
 {
     _dataTypeModule  = dataTypeModule;
     _dataTypeService = dataTypeService;
 }
 public PreValueCacheModule(IDataTypeModule dataTypeModule, IDataTypeService service)
 {
     _service        = service;
     _dataTypeModule = dataTypeModule;
 }
 public PropertyModule(IDataTypeModule dataTypeModule, IDataTypeService dataTypeService)
 {
     _dataTypeModule = dataTypeModule;
     _dataTypeService = dataTypeService;
 }
 public PreValueCacheModule(IDataTypeModule dataTypeModule, IDataTypeService service)
 {
     _service = service;
     _dataTypeModule = dataTypeModule;
 }
 public DocumentModelModule(IDataTypeModule dataTypeModule, IDocumentTypeModule documentTypeModule)
     : base(dataTypeModule,
            documentTypeModule,
            x => x.ContentType.Alias,
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               ContentService.Trashing += x;
                           }
                           else
                           {
                               ContentService.Trashing -= x;
                           } },              //trashing
            (x, type) => { },                //deleting
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               ContentService.Created += x;
                           }
                           else
                           {
                               ContentService.Created -= x;
                           } },                                                                                                                          //creating
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               ContentService.Saving += x;
                           }
                           else
                           {
                               ContentService.Saving -= x;
                           } },                                                                                                                        //saving
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               ContentService.Moving += x;
                           }
                           else
                           {
                               ContentService.Moving -= x;
                           } },                                                                                                                        //moving
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               ContentService.Copying += x;
                           }
                           else
                           {
                               ContentService.Copying -= x;
                           } },                                                                                                                          //copying
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               ContentService.Publishing += x;
                           }
                           else
                           {
                               ContentService.Publishing -= x;
                           } },                                                                                                                                //publishing
            (x, type) => { if (type == SubscribeType.Subscribe)
                           {
                               ContentService.UnPublishing += x;
                           }
                           else
                           {
                               ContentService.UnPublishing -= x;
                           } })                                                                                                                                    //unpublishing
 {
     _dataTypeModule     = dataTypeModule;
     _documentTypeModule = documentTypeModule;
 }