我是 C# 新手,但在 Java 中的 Spring 中是 exp。我可以使用 Spring 示例项目 Spring.WcfQuickStart.2010 轻松地重现我的问题。
在 Spring.WcfQuickStart.ServerApp.2010 项目中执行以下操作
1)添加以下TestDI类。
namespace Spring.WcfQuickStart
{
public class TestDI
{
public int test { get; set; }
public TestDI()
{
this.test = 10;
Console.WriteLine("TestDI cons called, value set to {0}", test);
}
}
}
2)在CalculatorService.cs中,返回“ServerApp Calculator testDI value=" + tdi.test;
3) 在 App.config 中执行以下操作。
<object id="testObj" type="Spring.WcfQuickStart.TestDI, Spring.WcfQuickStart.ServerApp" singleton="true"/>
<object id="calculator" singleton="true"
type="Spring.WcfQuickStart.CalculatorService, Spring.WcfQuickStart.ServerApp">
<property name="tdi" ref="testObj"/>
<property name="SleepInSeconds" value="1"/>
</object>
现在,如果您运行程序,您会期望客户端将返回值 10,但我得到的值是 0。这对于我定义的任何属性都是相同的。如果 TestDI 属性测试更改为静态,同样的问题。
防止这种情况并获得值 10 的唯一方法是从 App.config 文件中删除以下内容。
<object id="serviceOperation" type="Spring.Aop.Support.SdkRegularExpressionMethodPointcut, Spring.Aop">
<property name="pattern" value="Spring.WcfQuickStart.*"/>
</object>
我也可以将 value="Spring.WcfQuickStart.*" 更改为其他内容,但我的代码没有任何方面。
非常感谢任何帮助。