Zum Suchen von Controller-Klassen zur Laufzeit können Sie einen Assembly-Resolver schreiben.
public class MyAssembliesResolver : DefaultAssembliesResolver
{
public override ICollection<Assembly> GetAssemblies()
{
List<Assembly> assemblies = new List<Assembly>(base.GetAssemblies());
// Add all plugin assemblies containing the controller classes
assemblies.Add(Assembly.LoadFrom(@"C:\Plugins\MyAssembly.dll"));
return assemblies;
}
}
Dann fügen Sie diese Zeile auf die Register
Methode in WebApiConfig
.
config.Services.Replace(typeof(IAssembliesResolver), new MyAssembliesResolver());
Damit wird die Anfrage noch einmal an die individuellen Steuerung gesendet werden muß, wenn die Controller-Klassen von Baugruppen in dem Plugin-Ordner kommen können. Beispiel: Wenn MyAssembly.dll im Ordner plugins CarsController
enthält, lautet der URI für diesen Controller/api/cars.
Was ist, wenn Sie ein Plugin entfernen oder ersetzen möchten? –