2015-07-02 7 views
0

Я пытаюсь разрешить пользователям моей библиотеки, которая внутренне подключена через tinyioc, передать свою собственную реализацию интерфейса, определенного в моей библиотеке, который затем будет разрешен всякий раз, когда экземпляр необходим.Экземпляр реестра TinyIoC неизвестного типа

Например, пользователь может сделать это:

public class Logger : Things.ILogger 
{ 
    // Implement members 
    public void Log(string s) 
    { 
     ... 
    } 
} 

var thing = new Things.ThingBuilder().WithLogger(new Logger()).Build(); 

В пределах моей библиотеки я хочу подключить до регистратора, который передается в нечто вроде:.

namespace Things 
{ 
    public class ThingBuilder() 
    { 
     private ILogger logger; 

     public ThingBuilder WithLogger(ILogger logger) 
     { 
      this.logger = logger; 
      return this; 
     } 

     public Thing Build() 
     { 
      TinyIocContainer container = new TinyIocContainer(); 
      container.Register(ILogger, logger); // I want this to be used 
               // wherever an ILogger is needed 

      ... 
     } 
    }  
} 

Однако, я не могу» t найти способ TinyIoc позволит мне сделать это. Поддерживается ли это? Я знаю, что TinyIoc поддерживает регистрацию экземпляров типов, о которых он знает, но не если тип неизвестен.

ответ

0

В конце концов я работал над этим, вручную передав предоставленный пользователем экземпляр ILogger туда, где это требовалось в библиотечной кодовой базе. Это удовлетворительно, поскольку я думаю, что мои первоначальные ожидания были нереалистичными.