Как я могу преобразовать бросок типа значения как объект к строковому использованию XmlConvert?

Решением было реализовать 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();
6
задан Darrel Miller 26 January 2009 в 01:47
поделиться

3 ответа

Все типы значения являются по сути сериализуемыми. Таким образом, просто необходимо использовать 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);
}
2
ответ дан 17 December 2019 в 07:09
поделиться

Только для броска этого там Вы пытаетесь преобразовать бизнес-объект в XML?

Возможно, Вы могли бы хотеть посмотреть на XmlSerialization. При маркировке некоторых атрибутов на бизнес-объекте, .NET сделает весь необычный материал XML для Вас :).

Кроме того, есть ли какая-либо причина, почему Вы упаковываете свое значение? XmlConvert. ToString () имеет 19 перегрузок, многие из которых берут примитивы.

0
ответ дан 17 December 2019 в 07:09
поделиться

Another option is to use Reflector to look at then make a copy of System.Xml.Linq.XContainer.GetStringValue (it's internal unfortunatly)

1
ответ дан 17 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: