小编bon*_*dle的帖子

内部类接口的扩展方法

我目前正在尝试编写Dynamic Linq的扩展.为此,我需要为IEnumerableSignatures位于内部类中的接口添加方法签名ExpressionParser.

internal class ExpressionParser
{
    interface IEnumerableSignatures
    {
        [...]
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然我可以直接将签名添加到代码中,但我宁愿将其定义为接口的扩展方法,以保持原始代码的清洁.通常,要添加方法DefaultIfEmpty,我会这样做:

internal static class Extension 
{
    static void DefaultIfEmpty(this ExpressionParser.IEnumerableSignatures sig);
}
Run Code Online (Sandbox Code Playgroud)

这会产生访问错误,因为它ExpressionParser是内部的.我已经尝试过几种类和方法的访问级别组合.

有没有办法为这样的接口添加扩展方法或者我是否需要弄乱原始代码?

[编辑]事实证明,即使将界面本身设置为内部(或公共内容),动态linq也无法识别它.我在运行时仍然遇到了一些未发现的异常.因此编辑codeplex代码没有(明显的)方法.[/编辑]

.net c# extension-methods internal-class dynamic-linq

1
推荐指数
1
解决办法
1300
查看次数