【发布时间】:2011-03-30 16:00:47
【问题描述】:
我想让这个测试通过 - 有人知道怎么做吗?
public class Something
{
public string Name {get; set}
}
public interface IWithId
{
public Guid Id {get; set}
}
public class IdExtender
{
public static Object Extend(object toExtend)
{
...?
}
}
public class Tests
{
[Test]
public void Should_extend_any_object()
{
var thing = new Something { Name = "Hello World!"};
var extended = IdExtender.Extend(thing);
Assert.IsTrue(extended is IWithId);
Assert.IsTrue(extended.Id is Guid);
Assert.IsTrue(extened.Name == "Hello World!");
}
}
我想这样的事情可以用城堡动态代理,linfu等来完成......但是如何?
【问题讨论】:
-
如果有办法做到这一点,我很好奇..
-
我可以回答这个问题,我以前做过,但我不想被一些单行词和一两个参考文档所击败,如果我要经历破解打开视觉工作室并整理解决方案的麻烦......所以我会等一下,如果在几个小时内没有好的答案,我会提交一个答案。
-
这会扩展实例还是整个类型?
-
@Jimmy Hoffa,只有实例
-
我认为 .NET 中没有任何方法可以做到这一点。你有一个看起来像“装饰器”的模式,但它已经坏了。我认为你想做的和你创造的并不一致。你能带我们回到“你想要完成什么”吗?
标签: c# castle-dynamicproxy cop