是否可以像下面一样注入静态属性,因为它对我不起作用?
public static IMerchantModule MerchantModule { get; set; }
public RequestBaseValidationRules()
{
MerchantModule = ObjectFactory.GetInstance<IMerchantModule>();
}
当我注入非静态属性时,它会起作用。
欢迎提示。谢谢,X。
更新: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 :(得分:1)
不,将从StructureMap返回的值存储到静态属性中没有问题。
在您的示例中,您在实例构造函数中设置MerchantModule属性,但随后从静态属性(Sha1HashChecksum)引用它。如果尚未创建类的实例(执行实例构造函数),则MerchantModule属性将为null。更改代码以使用实例方法/属性,或在静态构造函数中设置静态MerchantModule属性(在构造函数声明中将“public”替换为“static”)。