我之前在阅读InfoQ关于面向复合编程的文章:
http://www.infoq.com/articles/Composite-Programming-Qi4j
我有兴趣了解是否有人正在使用(或已经使用过)Qi4j框架?
与使用传统的依赖注入框架(如Spring)将类连接在一起相比,它是如何比较的.从维护的角度来看,生成的对象图(基于mixins而不是类)更容易处理吗?
过去的一年里,在.NET社区(ala Qi4j)中围绕COP似乎引起了一些兴趣.一些人已经推出了自己的COP框架(参见下面的链接),看起来.NET 4.0的Dynamic Dispatch和MEF可能在任何.NET COP框架中都有潜在的作用.
一方面,很多这样的事情似乎可以追溯到System/38天的想法(是的,我是一个老家伙),尽管另一方面它似乎也非常适合Oslo(建模和存储库)).任何人都可以评论微软是否在COP上做任何工作?
最近的一些.NET COP框架工作:
Hendry Luk - 滚动你自己的COP
Yves GoEleven.com - 警察 - 概念证明
AndersNorås - 诡计还是特质?使用C#进行面向组合编程
MagnusMårtensson - Unity应用程序块上面向复合的编程高峰
我想让这个测试通过 - 任何人都知道如何做到这一点?
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!");
}
}
Run Code Online (Sandbox Code Playgroud)
我猜这样的事情可以用城堡动态代理,林福等完成......但是怎么样?