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

本文关键字:方法 参数 任何 UIViewController 子类 | 更新日期: 2023-09-27 18:13:05

我不想重复代码,因此我认为我使用一个方法来为我做这件事。我想做的是使用任何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);

但是我不能编译。我得到了

无法将'ref CustomViewController'表达式转换为'ref object'类型

调用removeFromContainer

类型'object'不包含'RemoveFromParentViewController'的定义,也找不到类型'object'的'RemoveFromParentViewController'的扩展方法

在我的方法(removeFromContainer)。

我怎么解决这个问题?我错过了什么?

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

您可以将object转换为类型UIViewController,并且不使用泛型。

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