2010-07-08 17 views
0

OK, je suis bloqué par une fonctionnalité apparemment triviale.Type n'étant pas correctement instancié par StructureMap (en utilisant la configuration XML)

Comment puis-je obtenir StructureMap pour initialiser les propriétés sur les instances de type récupérées à partir du conteneur, en utilisant la configuration XML (malheureusement, je dois utiliser XML)?

Mon code actuel est:

Le type et l'interface:

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

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

L'initialisation du récipient et par exemple un code de récupération:

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

configuration 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

Après avoir testé ce qui précède, cela fonctionne; probablement un problème d'initialisation du conteneur. Je suis en train d'enquêter. – Ben

+0

Suspect un problème de frappe - une propriété de chaîne fonctionne, décimal ne ... – Ben

Répondre

1

Cela ressemble à un problème de frappe avec StructureMap. En utilisant un int, float ou double fonctionne. L'utilisation d'une décimale ne fonctionne pas.

Contournement consiste à utiliser un autre type de virgule flottante, tel que float ou double.