相关疑难解决方法(0)

与ASP.NET Core和MVC6(核心)的统一

更新09.08.2018
Unity正在开发中,但我还没有时间测试它如何与ASP.NET Core框架配合使用.

更新15.03.2018
此解决方案适用于在使用.NET Framework 4.5.2而不是 .NET Core Framework 时使用ASP.NET Core v1和Unity的特定问题.我不得不使用这个设置,因为我需要一些.Net 4.5.2 DLL,但对于任何重新开始的人我都不会推荐这种方法.此外,Unity还没有进一步开发(据我所知)所以我建议将Autofac框架用于新项目.有关如何执行此操作的详细信息,请参阅此帖子.

简介
我正在使用ASP.NET和MVC构建Web应用程序.此应用程序依赖于某些服务(WCF服务,数据存储区服务等).现在为了保持良好和解耦,我想使用DI(Dependecy Injection)框架,特别是Unity.

初步研究
我发现这篇博文,但遗憾的是它不起作用.这个想法虽然很好.
它基本上表示您不应将ServiceCollection中注册的所有服务注册到您自己的容器中,而应引用默认的ServiceProvider.
所以.如果需要解决某些问题,则调用默认的ServiceProvider,如果没有解析,则使用自定义UnityContainer解析类型.

问题
MVC总是尝试使用默认的ServiceProvider解析Controller.
此外,我注意到即使控制器得到正确解析,我也永远不会"混合"依赖关系.现在,如果我想使用我的一个服务而且还要使用ASP的IOptions接口,则该类永远无法解析,因为这两个容器中没有一个具有两种类型的解析.

我需要什么
所以回顾一下我需要以下几点:

  • 我不需要将ASP.NET依赖项复制到UnityContainer中的设置
  • 一个可以解析我的MVC控制器的容器
  • 一个可以解决"混合"依赖关系的容器

编辑:
所以问题是如何实现这些要点?

环境
project.json:
在此输入图像描述

c# unity-container asp.net-core-mvc

20
推荐指数
2
解决办法
2万
查看次数

ASP.NET MVC 6中对Ninject的持续支持?

我一直很愉快地使用Ninject现在很长一段时间,我真的很喜欢它,但我面对的,因为释放一个艰难的选择ASP.NET 5MVC 6.

基本上,微软已经发布了自己的依赖注入系统; 据我所知,这引起了很多批评.但我更大的问题在于它如何影响其他图书馆.

我在网上提出的另一个问题其他资源来看,似乎Ninject不能与MVC 6一起开箱即用.尽管有一个以详细库形式给出的"解决方案" Microsoft.Framework.DependencyInjection.Ninject and Ninject.这甚至比较棘手,因为该库需要添加https://www.myget.org/F/aspnetmaster/到您的NuGet提要列表中.

我做了一些挖掘,发现这个图书馆的托管地点; 它看起来不错,它似乎可以从我能说的工作中得到解决,但有一些事情让我感到困扰.

  • 图书馆似乎并没有真正由Ninject创作者领导
  • 图书馆深埋在一个不起眼的存储库中
  • 网上的实际Ninject资源从未提及过

基本上,我非常担心这是某种乐队助手,对Ninject(甚至其他容器库)的支持正在消失.是否有一些隐藏的信息,我只是没有发现?

ninject asp.net-core-mvc

15
推荐指数
2
解决办法
4941
查看次数

如何将Ninject集成到ASP.NET Core 2.0 Web应用程序中?

我发现Ninject最近引入了对.NET Standard 2.0/.NET Core 2.0的支持.

但是,我找不到任何实际将其集成到Web应用程序中的扩展(例如类似于Ninject.Web.Common)

从旧的ASP.NET MVC解决方案的代码看,我意识到整个机制是不同的,因为它依赖于经典的机制,WebActivatorEx.PreApplicationStartMethod并且WebActivatorEx.ApplicationShutdownMethodAttribute在ASP.NET Core中不再可用.

此外,旧Ninject.Web.Common程序集提供了几个用于初始化的有用类--Bootstrapper,OnePerRequestHttpModule,NinjectHttpModule:

public static void Start()
{
    DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
    DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
    Bootstrapper.Initialize(CreateKernel);
}
Run Code Online (Sandbox Code Playgroud)

问题:有没有关于如何将Ninject集成到ASP.NET Core 2.0 Web应用程序中的示例?

ninject asp.net-core-2.0

11
推荐指数
1
解决办法
5284
查看次数

PlatformNotSupportedException Ninject Xamarin.iOS

我有一个使用 Xamarin.iOS 开发的 iOS 应用程序,它使用 Ninject 3.3.0 进行 IoC。我能够毫无问题地绑定接口和实现,但是我得到了PlatformNotSupportedException解决这些绑定的IResolutionRoot.Get<T>(). 我正在连接的 Macbook 上启动模拟器。我创建了一个测试(空白)iOS 应用程序来演示该问题。以下是相关行:

[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
  ...

  public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
  {
     ...

     var kernel = new StandardKernel();
     kernel.Bind<IFoo>().To<Foo>();

     var test = kernel.Get<IFoo>(); //exception thrown here

     return true;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪的顶部(可以提供更多):

" 在 System.Reflection.Emit.DynamicMethod..ctor (System.String name, System.Type returnType, System...."

根据站点,内核为其绑定创建了这些 DynamicMethod。既然.Net Standard 2.0支持Ninject ,为什么我会从这么简单的操作中得到这个异常?

c# ninject xamarin.ios

1
推荐指数
1
解决办法
747
查看次数