使用T4代码生成,是否可以访问当前项目中定义的类型?
例如,如果我有一个接口,我想将其实现委托给另一个类,即
interface IDoSomething {
public void do_something();
}
class DoSomethingImpl : IDoSomething {
public void do_something() {
// implementation...
}
}
class SomeClass : IDoSomething {
IDoSomething m_doSomething = new DoSomethingImpl();
// forward calls to impl object
public void do_something() {
m_doSomething.do_something();
}
}
Run Code Online (Sandbox Code Playgroud)
我想SomeClass用代码生成自动化呼叫转发; 这可能吗?
我有一些接口,以及一个实现此接口的类,说:
interface IMyInterface
{
void Func1();
void Func2();
}
class Concrete : IMyInterface
{
public virtual void Func1() { //do something }
public virtual void Func2() { //do something }
}
Run Code Online (Sandbox Code Playgroud)
现在,我想创建一个类,用一些特定的逻辑来装饰每个具体的类方法,在非生产环境中,在调用之前和之后执行.
class Decorator : Concrete
{
public override void Func1() { Pre(); base.Func1; Post(); }
public override void Func2() { Pre(); base.Func2; Post(); }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是有一种更简单的方法来自动生成这样的类,而不是在界面上使用反射并创建一个带有cs扩展名的文本文件?