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

Use any UIViewController subclass as generic parameter for method

我不想重复代码,因此我想我使用了一种适合我的方法。我想要做的是使用任何 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);

但我无法编译。我得到

Cannot convert 'ref CustomViewController' expression to type 'ref object'

调用 removeFromContainer

Type 'object' does not contain a definition for 'RemoveFromParentViewController' and no extension method 'RemoveFromParentViewController' of type 'object' could be found.

在我的方法中 (removeFromContainer)。

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

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

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