使用StructureMap注入静态属性?

时间:2009-11-24 12:32:14

标签: .net structuremap

是否可以像下面一样注入静态属性,因为它对我不起作用?

    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);
                    });
        }
    }

1 个答案:

答案 0 :(得分:1)

不,将从StructureMap返回的值存储到静态属性中没有问题。

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