2010-07-08 5 views
0

Хорошо, я озадачен кажущейся тривиальной функциональностью.Тип, который не создается корректно с помощью StructureMap (с использованием конфигурации XML)

Как я могу получить StructureMap для инициализации свойств экземпляров типа, извлеченных из контейнера, с использованием конфигурации XML (к сожалению, мне нужно использовать XML)?

Мой текущий код:

Тип и интерфейс:

public interface IMyType 
{ 
    decimal MyProperty { get; set; } 
} 

public MyType : IMyType 
{ 
    public decimal MyProperty {get; set; } 
} 

Инициализация контейнера и извлечения экземпляра код:

ObjectFactory 
    .Initialize(x => x.AddConfigurationFromXmlFile(@"StructureMap.config")); 
IMyType instance = ObjectFactory.GetNamedInstance<IMyType>("Blah"); 
var myPropertyValue = instance.MyProperty; //expected 1, is actually 0 

XML-конфигурации:

<?xml version="1.0" encoding="utf-8" ?> 
<StructureMap MementoStyle="Attribute"> 
    <AddInstance 
    PluginType="MyNamespace.IMyType, MyAssemblyName" 
    PluggedType="MyNamespace.MyType, MyAssemblyName" 
    Key="Blah" 
    Name="Blah 
    MyProperty="1" /> 
</StructureMap> 
+0

Проверяя вышеуказанное, он работает; вероятно, проблема инициализации контейнера. Исследую. – Ben

+0

Подозреваю, что проблема с типизацией - свойство строки работает, десятичное не ... – Ben

ответ

1

Это похоже на проблему с типизацией StructureMap. Использование int, float или double работает. Использование десятичной дроби - нет.

Обходным путем является использование другого типа с плавающей точкой, такого как float или double.