用于在运行时从接口生成具体类型的开源库?

Jon*_*and 5 .net c# code-generation

我正在研究需要接受合同(指定为接口)的东西,并动态创建一个实例,没有任何符合此接口的正式定义的具体类.

语法的一个例子是这样的:

IExampleMessage message = MessageBuilder.Create<IExampleMessage>(x => {
   x.PropertyA = "Test";
   x.PropertyB = 5;
});
Run Code Online (Sandbox Code Playgroud)

我已经看到其他.NET库和框架提供这样的行为(NServiceBus浮现在脑海中),我想知道是否有第三方库抽象出运行时代码.我认为Castle DynamicProxy是一个值得关注的地方,但这似乎完全集中在代理和拦截上,并且似乎没有公开代码生成方面.

我可以编写一个使用Reflection.Emit来实时创建类的实现,但是我宁愿使用一个可靠的开源库(如果存在的话).

有什么建议?

Pre*_*gha 1

模拟库 - NMock 和 RhinoMocks 怎么样?

您也可以使用存根/期望将实现添加到具体类型。

Rhino 特别有一个很好的基于 lambda 的语法来满足你想要的那种东西。

这还不能完全满足您的需求吗?

像这样的东西吗?

IExampleMessage message = MockRepository.GenerateStub<IExampleMessage>();
message .Stub(x => x.PropertyA).Return("Text")    
message .Stub(x => x.PropertyB).Return(5)
Run Code Online (Sandbox Code Playgroud)