gpt4 book ai didi

c# - 为什么我不能直接调用DbContext.ObjectContext?

转载 作者:行者123 更新时间:2023-12-03 03:10:54 27 4
gpt4 key购买 nike

为什么我打不通DbContext.ObjectContext直接地?我可以做到((IObjectContextAdapter)context).ObjectContext

我认为内部机制是这样的接口(interface)的隐式实现

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 的原因是什么?类?

最佳答案

由于 ObjectContext 是在 DbContext 类中显式实现的(如 MSDN - DbContext 所示),因此您必须将对象显式转换为接口(interface)才能调用属性。

“显式实现成员时,无法通过类实例访问它,而只能通过接口(interface)实例访问。” - MSDN - Explicit Interface Implementation Tutorial

希望这有帮助!

关于c# - 为什么我不能直接调用DbContext.ObjectContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13089496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com