public Forum(TenantId tenantId, ForumId forumId, Creator creator, Moderator moderator, string subject,
            string description, string exclusiveOwner)
        {
            AssertionConcern.NotNull(tenantId, "The tenant must be provided.");
            AssertionConcern.NotNull(forumId, "The forum id must be provided.");
            AssertionConcern.NotNull(creator, "The creator must be provided.");
            AssertionConcern.NotNull(moderator, "The moderator must be provided.");
            AssertionConcern.NotEmpty(subject, "The subject must be provided.");
            AssertionConcern.NotEmpty(description, "The description must be provided.");

            this.Apply(new ForumStarted(tenantId, forumId, creator, moderator, subject, description, exclusiveOwner));
        }
        public ForumStarted(TenantId tenantId, ForumId forumId, Creator creator, Moderator moderator, string subject,
            string description, string exclusiveOwner)
        {
            this.TenantId = tenantId;
            this.ForumId = forumId;
            this.Creator = creator;
            this.Moderator = moderator;
            this.Subject = subject;
            this.Description = description;
            this.ExclusiveOwner = exclusiveOwner;

            this.EventVersion = 1;
            this.OccurredOn = DateTime.Now;
        }
 private void When(ForumStarted e)
 {
     this._tenantId = e.TenantId;
     this._forumId = e.ForumId;
     this._creator = e.Creator;
     this._moderator = e.Moderator;
     this._subject = e.Subject;
     this._description = e.Description;
     this._exclusiveOwner = e.ExclusiveOwner;
 }