2009-11-24 38 views
0

是否可以注入静态属性,就像我在下面做的那样,因为它不适合我?用StructureMap注入静态属性?

public static IMerchantModule MerchantModule { get; set; } 

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

它工作时,我注入非静态属性。

任何提示欢迎。谢谢,十

更新:MerchantModule是当它被访问空,见下文

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

您是否收到错误讯息? – Jason 2009-11-24 15:17:37

回答

1

的例子没有,没有与存储从StructureMap返回到一个静态属性的值没有问题。

在您的示例中,您将MerchantModule属性设置为实例构造函数,但是然后从静态属性(Sha1HashChecksum)引用它。如果您尚未创建类的实例(它将执行实例构造函数),则MerchantModule属性将为null。将您的代码更改为使用实例方法/属性,或将静态构造函数中的静态MerchantModule属性(在构造函数声明中将“public”替换为“static”)。

+0

哦,我明白了。 :-)感谢您指出。 – 2009-12-02 11:32:33