是否有可能在Spring.Net中替换C#属性(使用被替换的方法声明?

时间:2013-07-15 19:06:14

标签: c# dependency-injection spring.net

我试图弄清楚是否可以使用< replacement-method>和一个在spring.Net中实现IMethodReplacer的对象在C#中换出一个getter?在这种情况下,我必须走这条路线,因为注入的属性是一个计算值 - 我是否必须将getter变为实际方法?

这是我正在尝试做的一个框架:

public class SecureHeader
{
    public string Token { get; set; }
}

public class Generator
{
    public SecureHeader GenerateSecureHeader(object[] args) { return new SecureHeader(); }
}

public class InstantiatedByIOC
{
    public virtual SecureHeader Header
    {
        get
        {
            return new SecureHeader
            {
                Token = "Hard Coded"
            };
        }
    }
}

public class SecureHeaderReplacer : IMethodReplacer
{
    public Generator Generator { get; set; }
    public object Implement(object target, MethodInfo method, object[] args)
    {
        return Generator.GenerateSecureHeader(null);
    }
}

我将如何进行布线(我一直得到一个无效的方法覆盖:D)?

以下不起作用:

<object id="replacer" type="SecureHeaderReplacer">
   <property name="Generator" ref="CreatedElsewhere"/>
</object>
<object id="entityToInject type="InstantiatedByIOC">
   <replaced-method name="Header replacer="replacer">
      <arg-type match="SecureHeader" />
   </replaced-method>
</object>

任何

1 个答案:

答案 0 :(得分:1)

....在通过反射器查看代码之后,事实证明我可以使用类似的东西:

<object id="entityToInject" type="InstantiatedByIOC">
   <replaced-method name="get_Header" replacer="replacer"/>
</object>