使用CSharpCodeProvider编译部分类

时间:2012-01-12 16:04:37

标签: c# reflection csharpcodeprovider

我有一个代码模板,用于在项目文件夹中构建文件,并使用分部类中定义的属性来确定仍需要实现哪些属性。举个例子:

public partial class Thingy : IThingy
{
    public Foo Bar { get; set; }
}

public interface IThingy
{
    Foo Bar { get; set; }
    Baz Biz { get; set; }
}

并且模板应该生成:

public partial class Thingy
{
    Baz Biz { get; set; }
}

我可以保证模板将生成剩余的信息以满足接口的期望,因此甚至可以生成类,除了CSharpCodeProvider balks只是获得非接口中实现的一半接口的概念生成的部分类。有没有办法告诉提供者忽略一个接口正在实现?

编辑:我已经多考虑了一下,并以实际首先将源读取到字符串,删除接口引用以及抛出代码字符串的形式找到了一种解决方法到CompileAssemblyFromSource而不是CompileAssemblyFromFile,但这感觉超级笨拙,并且很可能会引入错误。想法?

1 个答案:

答案 0 :(得分:0)

我认为您需要修改源代码以删除接口实现声明。