Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Main()
- {
- IDocumentLoaderModule[] modules = new IDocumentLoaderModule[]
- {
- new IntDocumentLoaderModule(),
- new StringDocumentLoaderModule()
- };
- DocumentLoader loader = new DocumentLoader(modules);
- Document document = loader.LoadDocument();
- document.Dump();
- }
- public class DocumentLoader
- {
- private readonly IReadOnlyList<IDocumentLoaderModule> _modules;
- public DocumentLoader(IReadOnlyList<IDocumentLoaderModule> modules)
- {
- _modules = modules;
- }
- public Document LoadDocument()
- {
- Document document = new Document();
- foreach (var module in _modules)
- module.Load(document);
- return document;
- }
- }
- public class Document
- {
- public int IntValue { get; set; }
- public string StringValue { get; set; }
- }
- public interface IDocumentLoaderModule
- {
- void Load(Document document);
- }
- public class IntDocumentLoaderModule : IDocumentLoaderModule
- {
- public void Load (Document document)
- {
- // some logic
- document.IntValue = 42;
- }
- }
- public class StringDocumentLoaderModule : IDocumentLoaderModule
- {
- public void Load (Document document)
- {
- // some logic
- document.StringValue = "Foo";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement