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>
which is inheritsの前にこの問題に遭遇しIEnumerable
ました。これにはジェネリック バージョンIEnumerator<T> GetEnumerator()
と非ジェネリック バージョンがありますが、非ジェネリック バージョンIEnumerator GetEnumerator()
ではなくジェネリック バージョンしか呼び出すことができません。これは、非ジェネリックなものがタイプ セーフではなく、作成者がそれを非表示にしたいためです。
しかし、 DbContextクラスの理由は何でしょうか?