Wie können wir für jeden in AutoFAC registrierten Typ herausfinden, welcher Konstruktor verwendet wird, ohne etwas zu löC#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie können wir für jeden in AutoFAC registrierten Typ herausfinden, welcher Konstruktor verwendet wird, ohne etwas zu lö

Post by Guest »

Begründung : Wir migrieren von MEF zu Autofac. Durch die Erforschung des MEF -Containers können wir automatisch einen autofac -Registrierungscode generieren. MEF und AutoFAC können jedoch verschiedene Konstruktoren auswählen, die möglicherweise zu Regressionen führen können. Wir möchten alle Fälle identifizieren, in denen AutoFAC einen anderen Konstruktor auswählen würde, um die Bemühungen zur Bekämpfung dieser Diskrepanz zu bewerten. Logisch, um Autofac selbst dafür zu nutzen. Ich bin in Ordnung, "zu betrügen" und den nicht öffentlichen Autofac -Code durch Reflexion aufzurufen - sobald dieser Code verworfen wird. >

Code: Select all

using Autofac;

internal class AutofacSetup
{
internal static IContainer Init()
{
var builder = new ContainerBuilder();
// Register all the autofac modules here
return builder.Build();
}
}
< /code>
Ich möchte so etwas schreiben können: < /p>
var container = AutofacSetup.Init();
foreach (var r in container.ComponentRegistry.Registrations)
{
if (r is ReflectionActivator reflectionActivator)
{
// Analyze the registration
}
}
Ich kann den folgenden Code im ReflectionActivator Klasse:
sehen

Code: Select all

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));
}
scheint etwas zu sein, das ich verwenden könnte, auch wenn GetallParameters und GetAllbindings privat sind. Ich habe jedoch nicht den Kontext Objekt.
Vielleicht bin ich ganz auf einem falschen Weg? - Was ist der beste Weg, um Autofac zu nutzen, um mein Ziel zu erreichen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post