public BloodRelationInstance(BloodLineMember subject, BloodLineMember target, List <BloodRelationType> relationChain, BloodRelationDef relationDef)
 {
     this.Subject           = subject;
     this.Target            = target;
     this.RelationTypeChain = relationChain;
     this.RelationDef       = relationDef;
 }
        public static IEnumerable <BloodRelationDef> BuildRelationDefs()
        {
            var relations = new List <BloodRelationDef>();

            var childPar = new BloodRelationDef
            {
                BloodRelationName = "Child_Parent",
                RelationTypeChain = new List <BloodRelationType> {
                    BloodRelationType.Child
                },
                TermsTags = new Dictionary <string, IEnumerable <string> >()
            };

            childPar.TermsTags.Add("Son", new List <string> {
                "male"
            });
            childPar.TermsTags.Add("Daughter", new List <string> {
                "female"
            });
            relations.Add(childPar);

            var parChild = new BloodRelationDef
            {
                BloodRelationName = "Parent_Child",
                RelationTypeChain = new List <BloodRelationType> {
                    BloodRelationType.Parent
                },
                TermsTags = new Dictionary <string, IEnumerable <string> >()
            };

            parChild.TermsTags.Add("Father", new List <string> {
                "male"
            });
            parChild.TermsTags.Add("Mother", new List <string> {
                "female"
            });
            relations.Add(parChild);

            var broSis = new BloodRelationDef
            {
                BloodRelationName = "Parent_Child",
                RelationTypeChain = new List <BloodRelationType> {
                    BloodRelationType.Sibling
                },
                TermsTags = new Dictionary <string, IEnumerable <string> >()
            };

            broSis.TermsTags.Add("Brother", new List <string> {
                "male"
            });
            broSis.TermsTags.Add("Sister", new List <string> {
                "female"
            });
            relations.Add(broSis);

            var grandParents = new BloodRelationDef
            {
                BloodRelationName = "Parent_Child",
                RelationTypeChain = new List <BloodRelationType> {
                    BloodRelationType.Parent, BloodRelationType.Parent
                },
                TermsTags = new Dictionary <string, IEnumerable <string> >()
            };

            grandParents.TermsTags.Add("Grand Father", new List <string> {
                "male"
            });
            grandParents.TermsTags.Add("Grand Mother", new List <string> {
                "female"
            });
            relations.Add(grandParents);

            var grandChild = new BloodRelationDef
            {
                BloodRelationName = "Parent_Child",
                RelationTypeChain = new List <BloodRelationType> {
                    BloodRelationType.Child, BloodRelationType.Child
                },
                TermsTags = new Dictionary <string, IEnumerable <string> >()
            };

            grandChild.TermsTags.Add("Grand Son", new List <string> {
                "male"
            });
            grandChild.TermsTags.Add("Grand Daughter", new List <string> {
                "female"
            });
            relations.Add(grandChild);

            var auntUncle = new BloodRelationDef
            {
                BloodRelationName = "AuntUncle",
                RelationTypeChain = new List <BloodRelationType> {
                    BloodRelationType.Parent, BloodRelationType.Sibling
                },
                TermsTags = new Dictionary <string, IEnumerable <string> >()
            };

            auntUncle.TermsTags.Add("Uncle", new List <string> {
                "male"
            });
            auntUncle.TermsTags.Add("Aunt", new List <string> {
                "female"
            });
            relations.Add(auntUncle);

            var neiceNef = new BloodRelationDef
            {
                BloodRelationName = "Neice_Nef",
                RelationTypeChain = new List <BloodRelationType> {
                    BloodRelationType.Sibling, BloodRelationType.Child
                },
                TermsTags = new Dictionary <string, IEnumerable <string> >()
            };

            neiceNef.TermsTags.Add("Nefew", new List <string> {
                "male"
            });
            neiceNef.TermsTags.Add("Neice", new List <string> {
                "female"
            });
            relations.Add(neiceNef);


            return(relations);
        }