Как сохранить значение типа Class <ClassImplementingProtocol> в словаре типа [String: Class <Protocol>] в Swift?

Я хочу хранить более специализированный тип в словаре типа [String: SomeClass]. Вот пример кода, иллюстрирующего мою проблему (также доступен для игры наhttps://swiftlang.ng.bluemix.net/#/repl/579756cf9966ba6275fc794a):

class Thing<T> {}

protocol Flavor {}

class Vanilla: Flavor {}

var dict = [String:Thing<Flavor>]()

dict["foo"] = Thing<Vanilla>() 

Выдает ошибкуERROR at line 9, col 28: cannot assign value of type 'Thing<Vanilla>' to type 'Thing<Any>?'.

Я пробовал кастингThing<Vanilla>() as Thing<Flavor> но это выдает ошибкуcannot convert value of type 'Thing<Vanilla>' to type 'Thing<Flavor>' in coercion.

Я также попытался определить словарь как тип[String:Thing<Any>] но это тоже ничего не меняет.

Как мне создать коллекцию разныхThingс не прибегая к равнине[String:AnyObject]?

Я должен также упомянуть, что классThing не определен мной (на самом деле речь идет о BoltsSwiftTasks), поэтому решение для создания базового классаThing без параметра типа не работает.

Ответы на вопрос(2)

Ваш ответ на вопрос