2009-11-24 3 views
0

est-il possible d'injecter des propriétés statiques, comme je le fais ci-dessous, parce que cela ne fonctionne pas pour moi?Injecter une propriété statique avec StructureMap?

public static IMerchantModule MerchantModule { get; set; } 

    public RequestBaseValidationRules() 
    { 
     MerchantModule = ObjectFactory.GetInstance<IMerchantModule>(); 
    } 

Cela fonctionne lorsque j'injecte à une propriété non statique.

Toute astuce bienvenue. Merci, X.

Mise à jour: MerchantModule est nulle quand il est accessible, voir l'exemple ci-dessous

public static IBusinessRule<T> Sha1HashChecksum 
    { 
     get 
     { 
      return new BusinessRule<T>(
       MethodBase.GetCurrentMethod().Name, "Sha1Hash is not valid", 
       request => 
        { 
         string sharedSecret = 
          MerchantModule.GetSharedSecretForMerchantId(request.MerchantId); 
         string hashCheck = HashHelper.GetSha1Hash(request.StringToHash, sharedSecret); 
         return request.Sha1Hash.Equals(hashCheck); 
        }); 
     } 
    } 
+0

Un message d'erreur s'affiche-t-il? – Jason

Répondre

1

Non, il n'y a pas de problème avec le stockage d'une valeur retournée par StructureMap dans une propriété statique.

Dans votre exemple, vous définissez la propriété MerchantModule dans un constructeur d'instance, mais en la référençant à partir d'une propriété statique (Sha1HashChecksum). Si vous n'avez pas encore créé une instance de votre classe (qui exécute le constructeur de l'instance), la propriété MerchantModule sera null. Modifiez votre code pour utiliser les méthodes/propriétés d'instance ou définissez la propriété statique MerchantModule dans un constructeur statique (remplacez le mot "public" par "static" dans votre déclaration de constructeur).

+0

Oh, je l'ai eu. :-) merci de le signaler. –

Questions connexes