gpt4 book ai didi

c# - Clay and CaSTLe 温莎 2.5

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

我刚刚下载了动态对象框架Clay我遇到了关于 castle project 的问题版本。 Clay 使用“城堡”v2.0 的功能,而我有一个项目已经开始引用 v2.5。不用说只是为了让事情更有趣,我是“CaSTLe”和 IoC 的所有事物的完全初学者。

真正的问题是升级粘土解决方案中的引用会导致折旧方法警告。无论您是否抑制该方法,提供的单元测试都会失败,并在“InterfaceProxyBehavior”的“拦截”中的以下代码中出现“无法对空引用执行运行时绑定(bind)”异常:

       var invoker = BindInvoker(invocation);
invoker(invocation);

产生运行时警告的代码在“DefaultClayActivator”的“CreateInstance”中:

       //var proxyType = _builder.CreateClassProxy(baseType, options);
var proxyType = _builder.CreateClassProxyType(baseType, null, options);

如前所述,我仍然是 CaSTLe Windsor 的完全初学者,并且刚刚开始使用 IoC,所以还没有接触过 Proxy 的东西。令人沮丧的是,我什至不知道错误消息在告诉我什么,或者要求我做什么。

有没有人已经将 Clay 移植到城堡项目的 2.5 版,所以知道所需的步骤。或者任何对城堡的这一部分有经验的人都可以进一步说明错误以及我可能需要做些什么来解决它。

已更新

对于失败的功能,我仍然不是很清楚,但有机会在 caSTLe.core 中使用 v2.0(工作)和 v2.5(中断)重新访问运行它的代码。附件是调试信息工作时和中断时的两个图像。它失败的测试如下,我已经用评论指出了调用。

namespace ClaySharp.Tests {
[TestFixture]
public class BinderFallbackTests {
...
[Test]
public void TestInvokePaths() {
var dynamically = ClayActivator.CreateInstance<Alpha>(new IClayBehavior[] {
new InterfaceProxyBehavior(),
new AlphaBehavior()
});
Alpha statically = dynamically;
IAlpha interfacially = dynamically;

Assert.That(dynamically.Hello(), Is.EqualTo("World-"));
Assert.That(statically.Hello(), Is.EqualTo("World-"));
Assert.That(interfacially.Hello(), Is.EqualTo("World-")); // <- Fails on this call

Assert.That(dynamically.Foo(), Is.EqualTo("Bar-"));
Assert.That(interfacially.Foo(), Is.EqualTo("Bar-"));

Assert.Throws<RuntimeBinderException>(() => dynamically.MissingNotHandled());
}
...
}
}

这是使用v2.5的caSTLe.core抛出异常时的调试信息: alt text

这是使用 v2.0 of caSTLe.core(有效)的调试信息,用于导致 v2.5 出现问题的同一调用/线路 alt text

最佳答案

看来我解决了这个问题。 (所有测试通过)

查看我在 codeplex 上创建的工作项以及我推送到我的 fork 的更改: http://clay.codeplex.com/SourceControl/network/Forks/remcoros/Clay

关于c# - Clay and CaSTLe 温莎 2.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3652128/

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