2012-01-12 65 views
1

我有一个代码模板,它在项目文件夹中构建文件,并使用部分类中定义的属性来确定哪些属性仍需要实现。举个例子:使用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,但这感觉超级笨拙,并且很可能会引入错误。思考?

+0

因此,您是否能够编译生成的部分类集? – abatishchev 2012-01-13 14:13:57

回答

0

我想你需要修改源代码去除接口实现声明。