Решением было реализовать BeanDefinitionRegistryPostProcessor
public class MyMockBeanDefinitioRegistrynPostProcessor implements BeanDefinitionRegistryPostProcessor {
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
// registry.registerBeanDefinition(mockBeanClass, mockBeanDefinition);...
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
// nothing to do
}
Затем объявить его как Bean
:
@Configuration
public class MockBeanConfig {
@Bean
public MyMockBeanDefinitioRegistrynPostProcessor mockBeanDefinitionPp() {
return new MyMockBeanDefinitioRegistrynPostProcessor();
}
}
и добавить в контекст:
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(MockBeanConfig.class);
context.register(MyExtLibConfig.class);
context.refresh();
Все типы значения являются по сути сериализуемыми. Таким образом, просто необходимо использовать XMLSerializer. Что-то вроде этого сделало бы это (на основе Вашего метода):
public static string ToXmlString(Type type, object value)
{
StringBuilder sb = new StringBuilder();
System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(sb);
System.Xml.Serialization.XmlSerializer serial =
new System.Xml.Serialization.XmlSerializer(type);
serial.Serialize(writer, value);
}
Только для броска этого там Вы пытаетесь преобразовать бизнес-объект в XML?
Возможно, Вы могли бы хотеть посмотреть на XmlSerialization. При маркировке некоторых атрибутов на бизнес-объекте, .NET сделает весь необычный материал XML для Вас :).
Кроме того, есть ли какая-либо причина, почему Вы упаковываете свое значение? XmlConvert. ToString () имеет 19 перегрузок, многие из которых берут примитивы.
Another option is to use Reflector to look at then make a copy of System.Xml.Linq.XContainer.GetStringValue (it's internal unfortunatly)