Reputation: 20289
I don't want to repeat code and therefore I thought I use a method which does that for me. What I want to do is to use any UIViewController
subclass as parameter (by reference). I tried something like this
private void removeViewController<T>(ref object viewController){
if (viewController != null) {
viewController = (T)Convert.ChangeType (viewController, typeof(T));
viewController.RemoveFromParentViewController ();
viewController.Dispose ();
viewController = null;
}
}
and call it in this way
removeFromContainer<CustomViewController> (ref customViewController);
but I can't compile. I get
Cannot convert 'ref CustomViewController' expression to type 'ref object'
on calling removeFromContainer and
Type 'object' does not contain a definition for 'RemoveFromParentViewController' and no extension method 'RemoveFromParentViewController' of type 'object' could be found.
in my method (removeFromContainer).
How can I solve that? What I'm missing?
Upvotes: 0
Views: 306
Reputation: 11787
You can cast your object
as type UIViewController
and use it without generics.
private void removeViewController(object objviewController)
{
var viewController = viewController as UIViewController
if (viewController != null)
{
viewController.RemoveFromParentViewController();
viewController.Dispose ();
}
}
Upvotes: 1