Для каждого типа, зарегистрированного в Autofac, как мы можем выяснить, какой конструктор будет использоваться, на самомC#

Место общения программистов C#
Ответить
Anonymous
 Для каждого типа, зарегистрированного в Autofac, как мы можем выяснить, какой конструктор будет использоваться, на самом

Сообщение Anonymous »

Обоснование : мы мигрируем из MEF в Autofac. Изучая контейнер MEF, мы можем автоматически генерировать регистрационный код AutoFAC. Тем не менее, MEF и Autofac могут выбрать различные конструкторы, которые потенциально могут привести к регрессиям. Мы хотели бы определить все случаи, когда Autofac выбирает другой конструктор, чтобы оценить усилия по решению этого несоответствия. логично использовать самой Autofac для этого. Я в порядке, чтобы «обмануть» и вызвать не публичный код Autofac через отражение - после того, как все этот код будет сброшен.
более конкретно, предположим >

Код: Выделить всё

using Autofac;

internal class AutofacSetup
{
internal static IContainer Init()
{
var builder = new ContainerBuilder();
// Register all the autofac modules here
return builder.Build();
}
}
< /code>
Я хотел бы иметь возможность написать что -то подобное: < /p>
var container = AutofacSetup.Init();
foreach (var r in container.ComponentRegistry.Registrations)
{
if (r is ReflectionActivator reflectionActivator)
{
// Analyze the registration
}
}
Я вижу следующий код внутри OfferueCtectActivator Class:

Код: Выделить всё

var prioritizedParameters = GetAllParameters(parameters);

var allBindings = GetAllBindings(_constructorBinders!, context, prioritizedParameters);

var selectedBinding = ConstructorSelector.SelectConstructorBinding(allBindings, parameters);

if (!selectedBinding.CanInstantiate)
{
throw new InvalidOperationException(string.Format(
CultureInfo.CurrentCulture,
ReflectionActivatorResources.ConstructorSelectorCannotSelectAnInvalidBinding,
ConstructorSelector.GetType().Name));
}
кажется чем -то, что я мог бы использовать, даже если GetallParameters и getallbindings являются частными. Тем не менее, у меня нет контекста объекта.
Может быть, я полностью нахожусь на неправильном пути? - Как лучше всего использовать Autofac для достижения моей цели?

Подробнее здесь: https://stackoverflow.com/questions/794 ... uctor-will
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»