How do I make fun of autofac auto-generated delegate factories?

I am trying to get unit test for one of my classes. I want to enter my factory instead of an auto-generated factory that allows autofac. How to register my own function as a delegate to replace an auto generated factory delegate?

My code looks something like this:

interface IEntryImporter { ... } class EntryImporter : IEntryImporter { public EntryImporter(ISeries series, IMatch match, Entry.Factory entryFactory) { : } : } interface IEntry : { ... } class Entry : IEntry { public delegate IEntry Factory(); public Entry() { ... } } interface IMatch : { ... } class Match : IMatch { ... } interface ISeries : { ... } class Series : ISeries { ... } void IEntry MyEntryFactory() { var entry = new Mock<IEntry>(); : return entry.Object; } void TestMe() { ContainerBuilder builder = new ContainerBuilder(); builder.RegisterType<Entry>().As<IEntry>(); builder.RegisterType<Match>().As<IMatch>(); builder.RegisterType<Series>().As<ISeries>(); builder.RegisterType<EntryImporter>.As<IEntryImporter>(); var series = new Mock<ISeries>(MockBehavior.Strict); builder.RegisterInstance<ISeries>(series.Object); var match = new Mock<IMatch>(MockBehavior.Strict); builder.RegisterInstance<IMatch>(match.Object); // How to register MyEntryFactory as Entry.Factory for autofac to resolve? using(var container = builder.Build()) { var importer = container.Resolve<IEntryImporter>(); : } } 
+6
source share
1 answer

You can register your own method for use as a factory layout entry as follows:

 builder.Register<Entry.Factory>(c => MyEntryFactory).As<Entry.Factory>(); 

I got your sample work as part of Autofac Answers on GitHub .

+6
source

Source: https://habr.com/ru/post/890386/


All Articles