Я хочу автоматически зарегистрировать общие / простые сервисы в моем контейнере Unity. Я думаю, что самый чистый способ сделать это - использовать пользовательский атрибут.
Затем я могу проверить все (абстрактные) классы в сборке и зарегистрировать эти типы с единицей.
Часть информации, которую я пропускаю, - это интерфейс (-ы), для которого класс хочет зарегистрироваться в
например:
Public Class AutoRegisterAttribute
Public Property ForInterface As System.Type
Public Sub New(ForInterface As System.Type)
Me.ForInterface = ForInterface
End Sub
...
End Class
И класс будет использовать его следующим образом
<AutoRegister(ForInterface:=Stratego.Interfaces.IEngine)>
Public Class StrategoEngine
Implements IEngine
Implements IDisposable
...
End Class
Обратите внимание, я не просто хочу найти класс, который он реализует, как показано с IDisposable
Я пытался сделать это, используя обобщенные значения (обобщенные значения не наследуются от Attribute
), с параметром типа (передача в IEngine.GetType приводит к «Требуется постоянное выражение»)
Возможно ли это? Если да, то как мне этого добиться?