2009-11-24 69 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