Xamarin.ios 当关联的控制器派生自基类时,MonoTouch无法打开xib文件

Xamarin.ios 当关联的控制器派生自基类时,MonoTouch无法打开xib文件,xamarin.ios,monodevelop,Xamarin.ios,Monodevelop,我已经创建了一个UIViewController派生的基本视图控制器,我的大多数控制器都继承了它: public abstract class ViewModelViewController<T> : UIViewController where T : ViewModelBase { ... } 公共抽象类ViewModelViewController: UIViewController,其中T:ViewModelBase { ... } 一旦控制器从此基础控制器派生 pu

我已经创建了一个UIViewController派生的基本视图控制器,我的大多数控制器都继承了它:

public abstract class ViewModelViewController<T> :
  UIViewController where T : ViewModelBase
{
...
}
公共抽象类ViewModelViewController:
UIViewController,其中T:ViewModelBase
{
...
}
一旦控制器从此基础控制器派生

public partial class MainViewController :
  ViewModelViewController<MainPageViewModel>
{
..
}
公共部分类MainViewController:
ViewModelViewController
{
..
}
尝试打开与控制器关联的.xib会导致此错误,此错误不会通过重建、重新启动或任何紧急措施消失:

Error updating Objective-C type information. Argument cannot be null.
Parameter name: type.

ArgumentNullException: Argument cannot be null.
Parameter name: type
  at MonoDevelop.Projects.Dom.Parser.ProjectDom+<GetInheritanceTree>c__Iterator33.MoveNext () [0x0023d] in /private/tmp/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom.Parser/ProjectDom.cs:164 
  at MonoDevelop.MacDev.ObjCIntegration.NSObjectProjectInfo.ResolveCliToObjc (MonoDevelop.MacDev.ObjCIntegration.NSObjectTypeInfo type) [0x000fb] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.MacDev/ObjCIntegration/NSObjectProjectInfo.cs:182 
  at MonoDevelop.MacDev.ObjCIntegration.NSObjectProjectInfo.Update () [0x000fe] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.MacDev/ObjCIntegration/NSObjectProjectInfo.cs:89 
  at MonoDevelop.MacDev.ObjCIntegration.NSObjectProjectInfo.Update (Boolean force) [0x0000c] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.MacDev/ObjCIntegration/NSObjectProjectInfo.cs:66 
  at MonoDevelop.MacDev.XcodeSyncing.XcodeProjectTracker.UpdateTypes (IProgressMonitor monitor, Boolean force) [0x00034] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeProjectTracker.cs:302 
更新Objective-C类型信息时出错。参数不能为null。 参数名称:type。 ArgumentNullException:参数不能为null。 参数名称:类型 在/private/tmp/source/MonoDevelop/main/src/core/MonoDevelop.core/MonoDevelop.Projects.Dom.Parser.ProjectDom+c_uu迭代器33.MoveNext()[0x0023d]中 位于/private/tmp/source/MonoDevelop/main/src/addins/MonoDevelop.MacDev/objcsintegration.NSObjectTypeInfo-type中的MonoDevelop.MacDev.objcsintegration.NSObjectProjectInfo.ResolveCliToObjc(monodev.MacDev.objcsintegration.NSObjectTypeInfo-type)[0x000fb] 在/private/tmp/source/monodevel/main/src/addins/MonoDevelop.MacDev/objcigration/NSObjectProjectInfo.Update()[0x000fe]中的MonoDevelop.MacDev.objcigration.NSObjectProjectInfo.cs:89 在/private/tmp/source/monodevel/main/src/addins/MonoDevelop.MacDev/objcigration/NSObjectProjectInfo.Update(布尔力)[0x0000c]中的MonoDevelop.MacDev.objcigration.NSObjectProjectInfo.cs:66 在/private/tmp/source/MonoDevelop/main/src/addins/monodesyncing.XcodeProjectTracker.updateType(IProgressMonitor监视器,布尔力)[0x00034]中的/private/tmp/source/MonoDevelop/main/src/addins/monodesyncing/XcodeProjectTracker.cs:302 唯一的解决方法(实际上不是选项)是在编辑xib之前注释掉整个分部类。这是一个很好的例子


有人知道真正的解决方法吗

的修复将在下一次MonoDevelop更新中进行。

请使用您正在使用的base和MainViewController的构造函数更新您的代码好吗?请在Product:MonoDeveloper组件iPhone加载项中填写错误报告。谢谢你的更新。同时,用[Register(“ViewModelViewController”)]装饰我的基本控制器似乎可以缓解这个问题。