2012-01-12 60 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

我想你需要修改源代碼去除接口實現聲明。