为什么不能DbContext.ObjectContext
直接打电话?我可以做这个((IObjectContextAdapter)context).ObjectContext
我认为内部机制是这样的接口的隐式实现
class Program
{
static void Main(string[] args)
{
TestClass t = new TestClass();
((TestInterface)t).TestMethod();
// I can't call t.TestMethod()
Console.ReadKey();
}
}
public interface TestInterface
{
void TestMethod();
}
public class TestClass : TestInterface
{
void TestInterface.TestMethod()
{
Console.WriteLine("abcdefg");
}
}
我之前遇到过这个问题,它是IEnumerable<T>
继承IEnumerable
的,它有通用版本IEnumerator<T> GetEnumerator()
和非通用版本IEnumerator GetEnumerator()
,但你只能调用通用版本而不是非通用版本。这是因为非泛型不是类型安全的,作者想隐藏它。
但是DbContext类的原因是什么?