ModelBuilder.EmailValueGenerator.GenerateValue C# (CSharp) Method

GenerateValue() private method

private GenerateValue ( Type type, string referenceName, LinkedList buildChain ) : object
type System.Type
referenceName string
buildChain LinkedList
return object
        protected override object GenerateValue(Type type, string referenceName, LinkedList<object> buildChain)
        {
            if (buildChain == null)
            {
                throw new ArgumentNullException(nameof(buildChain));
            }
            
            var context = buildChain.Last?.Value;
            var firstName = GetValue<string>(PropertyExpression.FirstName, context);
            var lastName = GetValue<string>(PropertyExpression.LastName, context);
            var domain = Domain;
            var gender = GetValue<string>(PropertyExpression.Gender, context);

            Person person;

            if (string.Equals(gender, "male", StringComparison.OrdinalIgnoreCase))
            {
                person = TestData.NextMale();
            }
            else
            {
                person = TestData.NextFemale();
            }

            if (firstName == null)
            {
                firstName = person.FirstName;
            }

            if (lastName == null)
            {
                lastName = person.LastName;
            }

            if (domain == null)
            {
                domain = person.Domain;
            }

            var email = firstName + "." + lastName + "@" + domain;

            return email.Replace(" ", string.Empty).ToLowerInvariant();
        }