gpt4 book ai didi

c# - Spring.net,AOP 导致无法设置属性

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:54 25 4
gpt4 key购买 nike

我是 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.*"更改为其他内容,但我的代码没有任何方面。

非常感谢任何帮助。

最佳答案

尝试将您的属性设置为“虚拟”。我发现如果在使用 AOP 时属性不是虚拟的,您通常会看到空值/默认值。

关于c# - Spring.net,AOP 导致无法设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12304055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com