Подпись, ожидаемая от метода расширения CreatePerOwinContext
, - Func<T>
.
() => new ApplicationDbContext()
имеет подпись Func<T>
и может удовлетворить подпись.
ApplicationDbContext.Create
также имеет подпись Func<T>
и может также использоваться.
Разница заключается в том, что в первом примере вы создаете анонимный метод для возврата подписи. Во втором случае подпись метода уже предоставлена для вас. Они в значительной степени функционально эквивалентны, подобно тому, как вы можете подключить анонимный метод, созданный лямбда-выражениями, до event
в C# или использовать метод, который удовлетворяет подписи.
Что касается рассуждений, Owin агностика к какой-либо конкретной технологии и предназначен для обеспечения разработки приложений с рыхлой связью между приложением и хостингом приложения (IIS против Katana против ???). В результате OWIN не знает о (или не заботится) о Entity Framework, и поэтому Entity Framework создала метод с подписью для подключения к OWIN. Это называется сегрегацией интерфейса или ослабленной связью.
Вот что я понял, но я рад, что ничего не пропустил! Я люблю анонимные методы - это давайте мне писать меньше строк кода! – William