コード例 #1
0
        public void InitializeConfigInstance()
        {
            var configProperties = ConfigInterface.GetProperties();

            foreach (var prop in configProperties)
            {
                InitializeConfigProperty(prop);
            }
        }
コード例 #2
0
        private void BuildConfigBody(TypeBuilder typeBuilder)
        {
            var configInterfaceProperties = ConfigInterface.GetProperties();
            var eventAggregatorField      = BuildEventAggregatorField(typeBuilder);

            foreach (var prop in configInterfaceProperties)
            {
                var fieldBuilder    = BuildConfigPropertyField(typeBuilder, prop);
                var propertyBuilder = BuildConfigProperty(typeBuilder, prop);

                var propGetter = BuildConfigPropertyGetter(typeBuilder, fieldBuilder, prop);
                var propSetter = BuildConfigPropertySetter(typeBuilder, eventAggregatorField, fieldBuilder, prop);

                propertyBuilder.SetGetMethod(propGetter);
                propertyBuilder.SetSetMethod(propSetter);
            }
        }
コード例 #3
0
        private void AssertConfigInterface()
        {
            if (!ConfigInterface.IsInterface)
            {
                throw new Exception($"Error : {ConfigInterface.Name} must be an interface");
            }

            var properties            = ConfigInterface.GetProperties();
            var propGetterMethodNames = properties.Select(prop => ReflectionUtils.GetPropertyGetterMethodName(prop));
            var propSetterMethodNames = properties.Select(prop => ReflectionUtils.GetPropertySetterMethodName(prop));
            var propMethodNames       = propGetterMethodNames.Concat(propSetterMethodNames);

            if (ConfigInterface.GetMethods().Any(method => !propMethodNames.Contains(method.Name)))
            {
                throw new Exception($"Error : Cannot create config implementation type for {ConfigInterface.Name} because it contains methods. A config type can only contain properties.");
            }
        }