gpt4 book ai didi

c# - T4代码生成: access types in current project

转载 作者:可可西里 更新时间:2023-11-01 03:02:33 25 4
gpt4 key购买 nike

使用T4代码生成,是否可以访问当前项目中定义的类型?

例如,如果我有一个接口(interface)并且我想将它的实现委托(delegate)给另一个类,即

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();
}
}

我想通过代码生成在 SomeClass 中自动进行调用转移;这可能吗?

最佳答案

虽然这不能解决锁定问题(尽管我听说 VS2010 可以解决),但您可以尝试将 dll 复制到临时位置并只使用复制的程序集..

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #>
<#@ import namespace="System.Reflection" #>
<#@ import namespace="System.IO" #>
<#
var newFileName = System.IO.Path.GetTempFileName();
System.IO.File.Copy(@"C:\Development\CustomAssembly.dll",newFileName,true);

var assembly = Assembly.LoadFrom(newFileName);
var type = assembly.GetType("CustomAssembly.DummyClass");
#>
<#=newFileName#>
<#=type#>

关于c# - T4代码生成: access types in current project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1153542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com