【问题标题】:Compiling Partial Classes with CSharpCodeProvider使用 CSharpCodeProvider 编译部分类
【发布时间】:2012-01-12 16:04:37
【问题描述】:

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

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 反对只在非接口中实现一半接口的概念- 生成的部分类。有没有办法告诉提供者忽略正在实现的接口?

编辑:我对此进行了更多思考,并想出了一种解决方法,即首先将源代码实际读入字符串,删除接口引用,然后抛出代码字符串到CompileAssemblyFromSource 而不是CompileAssemblyFromFile,但这感觉超级笨拙,而且很可能会引入错误。想法?

【问题讨论】:

  • 那么,作为结果,你能编译生成的部分类集吗?

标签: c# reflection csharpcodeprovider


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多