gpt4 book ai didi

c# - CSharpCodeProvider 符合接口(interface)

转载 作者:行者123 更新时间:2023-11-30 18:02:12 25 4
gpt4 key购买 nike

我有一个 CSharpCodeProvider,它接受一个类的代码。在编译代码的项目中,我有一个接口(interface)。我希望我正在编译的代码符合这个接口(interface)。

这是我能想到的最简单的例子来说明我的问题。我有一个包含两个文件的项目:

程序.cs:

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//set up the compiler
CSharpCodeProvider csCompiler = new CSharpCodeProvider();

CompilerParameters compilerParameters = new CompilerParameters();
compilerParameters.GenerateInMemory = true;
compilerParameters.GenerateExecutable = false;

var definition =
@"class Dog : IDog
{
public void Bark()
{
//woof
}
}";
CompilerResults results = csCompiler.CompileAssemblyFromSource(compilerParameters, new string[1] { definition });

IDog dog = null;
if (results.Errors.Count == 0)
{
Assembly assembly = results.CompiledAssembly;
dog = assembly.CreateInstance("TwoDimensionalCellularAutomatonDelegate") as IDog;
}

if (dog == null)
dog.Bark();
}
}
}

IDog.cs:

namespace ConsoleApplication1
{
interface IDog
{
void Bark();
}
}

我似乎无法弄清楚如何让 CSharpCodeProvider 识别 IDog。我尝试了 compilerParameters.ReferencedAssemblies.Add("ConsoleApplication1"); 但没有成功。任何帮助将不胜感激。

最佳答案

解决方案是引用当前正在执行的程序集。

var location = Assembly.GetExecutingAssembly().Location;
compilerParameters.ReferencedAssemblies.Add(location);

关于c# - CSharpCodeProvider 符合接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269094/

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