У меня есть CSharpCodeProvider
, который принимает код для класса.В проекте, где код компилируется, у меня есть интерфейс.Я хотел бы, чтобы код, который я собираю, соответствовал этому интерфейсу.
Вот самый простой пример, который я могу придумать, чтобы проиллюстрировать мою проблему.У меня есть проект с двумя файлами:
Program.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");
, но это не сработало.Любая помощь будет оценена.