Вы бы использовали параметр key, если вы зарегистрировали несколько реализаций одного и того же интерфейса. Таким образом, вы можете позже получить конкретный. Например, у меня может быть несколько версий IHandler.
container.AddComponent<IHandler, FileHandler>("handlers.file");
container.AddComponent<IHandler, HttpHandler>("handlers.http");
//I can retrieve the first one like this (or something like this).
IHandler fileHandler = container.Resolve<IHandler>();
//I can retrieve the http handler like this
IHandler httpHandler = container.Resolve<IHandler>("handlers.http");
Кроме того, когда вы регистрируете компонент без ключа, я считаю, что его тип используется в качестве ключа.
container.AddComponent<IHandler, FileHandler>();
Я считаю, что это зарегистрировано с ключом "{Namespace} .IHandler". Таким образом, он может быть получен позже с помощью автоматического ключа.
Надеюсь, это поможет.