如何在接口为private / internal时调用显式接口实现方法?

时间:2015-03-24 09:11:13

标签: c# .net linq invoke

我想调用ICompiledQuery IProvider.Compile(Expression query)类中定义的方法System.Data.Linq.SqlClient.SqlProvider

IProvider界面是内部的,所以我无法进行演员表演。有没有办法调用这个方法?

1 个答案:

答案 0 :(得分:1)

您可以使用反射来获取方法并调用它。

// Some test stuff, replace this with your own.
Expression e = null;
SqlProvider p = new SqlProvider();

// Get the IProvider interface
var iProvider = typeof(SqlProvider).FindInterfaces((t, o) => t.FullName == "System.Data.Linq.Provider.IProvider", null).FirstOrDefault();

if (iProvider != null)
{
    // Get the Compile method on the interface
    MethodInfo m = iProvider.GetMethod("Compile");

    // Call it!
    var output = m.Invoke(p, new object[] { e });
}
相关问题