如何将通用类型存储在属性中,然后使用该类型属性传递给方法?
我有一个工厂,其方法接收视图控制器类型,但返回该视图控制器的实例(容器会处理此操作)。
public protocol ViewControllerFactoryProtocol {
func getViewController<T: UIViewController>(type: T.Type) -> UIViewController
}
public class ViewControllerFactory: ViewControllerFactoryProtocol {
private let container: Container
public init(container: Container) {
self.container = container
}
public func getViewController<T: UIViewController>(type: T.Type) -> UIViewController {
return self.container.resolve(type)!
}
我带有以下这样的属性
而我拥有这样的属性
var destinationViewController: UIViewController.Type { get }
现在我想做的事情是类似于:
factory.getViewController(self.destinationViewController)
我在这里声明destinationViewController
为LoginViewController.self
但是它并不能像那样工作。奇怪的是,如果我直接这样做,它就能正常工作:
factory.getViewController(LoginViewController.self)
有需要帮助的吗?谢谢。