public void Setup()
        {
            encryptionProfileFactoryMock = new Mock <IEncryptionProfileFactory>();
            encryptionServiceMock        = new Mock <IEncryptionService>();

            dictionary = new Dictionary <Type, IModelEncryptionDefinition>();

            var testModelType = typeof(TestModel);

            var modelEncryptionDefinition = new ModelEncryptionDefinition(
                testModelType.GetProperty(nameof(TestModel.EmailAddress)),
                EncryptionProfileType.Commmon);

            modelEncryptionDefinition
            .Add(testModelType.GetProperty(nameof(TestModel.FirstName)),
                 EncryptionProfileType.Commmon);

            dictionary.Add(
                testModelType,
                modelEncryptionDefinition);

            sut = new ModelEncryptionService <TestModel>(
                encryptionServiceMock.Object,
                encryptionProfileFactoryMock.Object,
                dictionary);
        }
        public IFluentEncryptionModelBuilder <T> RegisterPropertyOrMethod <TSelector>(
            Expression <Func <T, TSelector> > propertyOrMethod,
            EncryptionProfileType profileType)
        {
            var member = memberExpressionVisitor
                         .GetLastVisitedMember(propertyOrMethod.Body);

            if (modelEncryptionDefinitionDictionary
                .TryGetValue(typeof(T), out var modelEncryptionDefinition))
            {
                modelEncryptionDefinition.Add(member, profileType);
            }
            else
            {
                modelEncryptionDefinition = new ModelEncryptionDefinition(member, profileType);

                modelEncryptionDefinitionDictionary
                .Add(typeof(T), modelEncryptionDefinition);
            }


            return(this);
        }