/// <summary>
        /// Add a MetaProperty
        /// </summary>
        /// <param name="metaProperty">the property to add.</param>
        public void AddProperty(MetaPropertyProjection metaProperty)
        {
            if (metaProperty is null)
            {
                throw new ArgumentNullException(nameof(metaProperty));
            }

            // check if property exists.
            if (this._PropertyByName.ContainsKey(metaProperty.Name))
            {
                throw new ArgumentException("Property already exists.");
            }
            this._PropertyByName.Add(metaProperty.Name, metaProperty);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="AccessorProjection"/> struct.
 /// </summary>
 /// <param name="property">the property</param>
 /// <param name="entity">the entity</param>
 public AccessorProjection(MetaPropertyProjection property, EntityProjection entity)
 {
     this._Property = property;
     this._Entity   = entity;
 }