T4模板拦截

时间:2010-12-13 18:59:55

标签: .net dependency-injection inversion-of-control xamarin.ios t4

我想知道是否有人知道任何基于T4模板的方法拦截系统?

我们开始编写移动应用程序(目前使用MonoTouch for IOS)。我们有一套非常好的核心DI / IoC功能,我想在新平台的开发中利用它。由于不支持运行时代码生成Reflection.Emit,我希望使用T4模板来实现动态拦截功能(+ TinyIoC作为解析容器)。

我们目前正在使用Castle Windsor(并打算继续为我们的SL和完整的.NET开发这样做),但所有Windsor特定的绑定都是完全封装的,所以如果有合适的T4解决方案,它应该不难实现一个使用基于T4的实现而不是Windsor的适配器。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望使用T4动态生成代码(在运行时)。我不知道有任何系统可以做到这一点,但我认为编写这样的东西并不是很难。

您需要做的是指示C#(或任何其他.NET编译器)编译一些代码并生成程序集。完成此操作后,您需要将此程序集加载到AppDomain中。之后,您可以使用动态加载的程序集中的类型。

T4模板引擎是(如果我没记错的话)Visual Studio的一部分,所以困难的部分是指示模板引擎生成代码,可能没有你的应用程序需要依赖Visual Studio甚至开始吧(那太糟糕了)。

如果您不需要T4的全部功能(可能),您也可以自己吐出一些.NET代码,将其安全地保存到文件中并指示C#编译器为您生成程序集。

祝你好运。