PlatformNotSupportedException Ninject Xamarin.iOS
PlatformNotSupportedException Ninject Xamarin.iOS
我有一个 iOS 应用程序,使用 Xamarin.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;
}
}
这是堆栈跟踪的顶部(可以提供更多):
" at System.Reflection.Emit.DynamicMethod..ctor (System.String name,
System.Type returnType, System.…"
根据 .Net Standard 2.0 this site, the kernel creates these DynamicMethod's for its bindings. Since Ninject ,为什么我从如此简单的操作中得到这个异常?
更新: Portable.Ninject 有效,所以如果您使用 iOS,请改用它。以下是对我如何到达那里以及为什么常规 Ninject 不起作用的解释。
System.Reflection.Emitis not supported。这可能意味着 Ninject 的大部分不适用于 iOS.
这些链接特别误导了我:
https://developer.xamarin.com/api/type/System.Reflection.Emit.DynamicMethod/
现在阅读此限制后,很明显本文中提到的生成阻碍了 Ninject 工作,尽管没有明确说明。
http://arteksoftware.com/ioc-containers-with-xamarin/
这篇文章的作者提到了这个限制,尽管他似乎已经成功了。
我有一个 iOS 应用程序,使用 Xamarin.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;
}
}
这是堆栈跟踪的顶部(可以提供更多):
" at System.Reflection.Emit.DynamicMethod..ctor (System.String name, System.Type returnType, System.…"
根据 .Net Standard 2.0 this site, the kernel creates these DynamicMethod's for its bindings. Since Ninject
更新: Portable.Ninject 有效,所以如果您使用 iOS,请改用它。以下是对我如何到达那里以及为什么常规 Ninject 不起作用的解释。
System.Reflection.Emitis not supported。这可能意味着 Ninject 的大部分不适用于 iOS.
这些链接特别误导了我:
https://developer.xamarin.com/api/type/System.Reflection.Emit.DynamicMethod/
现在阅读此限制后,很明显本文中提到的生成阻碍了 Ninject 工作,尽管没有明确说明。
http://arteksoftware.com/ioc-containers-with-xamarin/
这篇文章的作者提到了这个限制,尽管他似乎已经成功了。