Having two classes, NodeBase and ContentSectionNode which inherits from the abstract class NodeBase, I'd like to know if there is any way to avoid repeating a block of code in the ContentSectionNode constructors, while also delegating to the base class constructors.
The abstract NodeBase class ctors look like this:
protected NodeBase(string tagType, string content)
  : this()
{
  TagType = tagType;
  Content = content;
}
protected NodeBase(Guid? parentId, int? internalParentId, string tagType, string content) 
  : this(tagType, content)
{
  ParentId = parentId;
  InternalParentId = internalParentId;
}
The ContentSectionNode class ctors look like these:
public ContentSectionNode(Guid createdBy)
  : this()
{
  _createdBy = createdBy;
  _createdAt = DateTime.Now;
  UpdatedAt = _createdAt;
  UpdatedBy = _createdBy;
}
public ContentSectionNode(Guid createdBy, string tagType, string content)
  :base(tagType, content)
{
  _createdBy = createdBy;
  _createdAt = DateTime.Now;
  UpdatedAt = _createdAt;
  UpdatedBy = _createdBy;
}
public ContentSectionNode(Guid createdBy, Guid? parentId, int? internalParentId, string tagType, string content)
  : base(parentId, internalParentId, tagType, content)
{
  _createdBy = createdBy;
  _createdAt = DateTime.Now;
  UpdatedAt = _createdAt;
  UpdatedBy = _createdBy;
}
I'd like to know if there is any way that I can avoid repeating the
_createdBy = createdBy;
_createdAt = DateTime.Now;
UpdatedAt = _createdAt;
UpdatedBy = _createdBy;
block in all the ctors of the ContentSectionNode class. Please not that the _createdBy, _createdAt and UpdatedBy, UpdatedAt fields/props are only accessible from the ContentSectionNode class and can only be set there.
The project is using C# 5.0, so no auto-property initializers. Thanks!
Like this?
public ContentSectionNode(Guid createdBy)
  : this(createdBy,null,null, null, null)
{
}
public ContentSectionNode(Guid createdBy, string tagType, string content)
  : this(createdBy, null, null tagType, contect)
{
}
public ContentSectionNode(Guid createdBy, Guid? parentId, int? internalParentId, string tagType, string content)
  : base(parentId, internalParentId, tagType, content)
{
  _createdBy = createdBy;
  _createdAt = DateTime.Now;
  UpdatedAt = _createdAt;
  UpdatedBy = _createdBy;
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With