我有一个在Android和WinPhone 8上正常运行的项目。当我尝试在iOS上运行时,我收到以下错误
Microsoft.Practices.ServiceLocation.ActivationException:不能 register:在x
中找不到公共构造函数
其中x
是流量首先点击的SimpleIoc.Default.Register<T, TU>();
。我已移动代码(如其他地方所示),以确保在SimpleIoc
中进行所有特定于平台的ViewModelLocator
调用。
我在抱怨错误的类中添加了公共默认ctors(虽然我已将PreferredConstructor
设置为原始版本,而不是新添加的公共ctor。)
我有一种感觉,这个错误是误报(其他东西是失败的,但是指着那段代码)。
通过构建服务器使用Xam.iOS(代码来自VS2015)。 Xcode正在运行8.3仿真器(可能需要更新才能进行8.4测试)
答案 0 :(得分:2)
如果构造函数认为它没有被使用,那么它可能正在优化构造函数。尝试将链接器选项设置为“不链接”并查看它是否再次执行,或者甚至在其他地方新建该类的实例,以便链接器知道使用了构造函数。你不一定要这样离开,但如果它消除了错误,你至少会知道原因。
答案 1 :(得分:0)
[保留] 属性为我做了诀窍。 用它装饰构造函数并保留链接器设置。
此属性是Microsoft.WindowsAzure.MobileServices名称空间的一部分。