使用任何UIViewController子类作为方法的泛型参数

时间:2015-09-16 14:16:05

标签: c# ios generics uiviewcontroller xamarin

我不想重复代码,因此我认为我使用的方法可以帮助我。我想要做的是使用任何UIViewController子类作为参数(通过引用)。我试过这样的事情

private void removeViewController<T>(ref object viewController){
    if (viewController != null) {
        viewController = (T)Convert.ChangeType (viewController, typeof(T));
        viewController.RemoveFromParentViewController ();
        viewController.Dispose ();
        viewController = null;
    }
}

并以这种方式调用

removeFromContainer<CustomViewController> (ref customViewController);

但我无法编译。我得到了

  

无法转换&#39; ref CustomViewController&#39;表达式键入&#39; ref object&#39;

调用 removeFromContainer

  

输入&#39;对象&#39;不包含&#39; RemoveFromParentViewController&#39;的定义并没有扩展方法&#39; RemoveFromParentViewController&#39;类型&#39;对象&#39;可以找到。

在我的方法中( removeFromContainer )。

我该如何解决?我错过了什么?

1 个答案:

答案 0 :(得分:1)

您可以将object转换为UIViewController类型,并在不使用泛型的情况下使用它。

private void removeViewController(object objviewController)
{
    var viewController = viewController as UIViewController
    if (viewController  != null) 
    {      
        viewController.RemoveFromParentViewController();
        viewController.Dispose ();
    }
}