public void InitializeConfigInstance() { var configProperties = ConfigInterface.GetProperties(); foreach (var prop in configProperties) { InitializeConfigProperty(prop); } }
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); } }
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."); } }