Если вы сможете рассказать больше о том, чего вы действительно пытаетесь достичь, вы получите лучший ответ. В общем, вы вообще не хотите полагаться на передачу ConstructorArgument, если это может помочь - это должен быть последний способ вставить значение параметра в создание компонента, которым вы не владеете, и, следовательно, можете полагаться на быть переименованным [as] willy nilly во время рефакторинга. Так что для нормального кода, если вы можете попытаться сохранить его в интерфейсах, чтобы сделать вещи однозначными и не полагаться на имена, которые лучше.
Не могу найти пример прямо сейчас, но есть довольно распространенная идиома, называемая статическое отражение . Предоставленный ConstructorArgument может соответствовать любому параметру с таким именем в любом из конструкторов, поэтому статическое отражение не является наиболее подходящей вещью в этом случае.
Следовательно, лучшее, что статическое отражение, вероятно, позволит вам достичь, это что-то вроде:
var ninja = ninject.Get<Ninja>( ParamNamesOf(()=>new Ninja( "dummy", "dummy" )).First() );
Типичный пример, который вы увидите, это когда вы хотите извлечь имя свойства, к которому обращаются в экземпляре. Это немного отличается, так как нужно работать с выражением вызова конструктора.
Что касается поиска подходящей библиотеки, которая уже имеет именно это, выполните упражнение для поисковика: D (Но я бы посоветовал найти лучший способ выразить то, что вы хотите сделать, который не использует ConstructorArgument
в предпочтении этому подходу в любом случае .)