Метод фабрики экземпляра StructureMap
Я пытаюсь зарегистрировать фабричный метод для создания экземпляров открытого универсального типа. MongoCollection<>
, Тем не менее, когда я GetInstance
похоже, что он использует конструктор MongoCollection вместо фабричного метода.
var mongo = new MongoConfiguration("mongodb://localhost", "test");
For(typeof (MongoCollection<>)).Use(c =>
{
var requestedType = c.BuildStack.Current.RequestedType; // set breakpoint here
var type = requestedType.GetGenericArguments()[0];
return mongo.GetCollection(type);
});
Тогда я делаю
ObjectFactory.GetInstance<MongoCollection<User>>();
Когда я бегу GetInstance
строка никогда не достигает точки останова внутри фабричного метода, но выдает StructureMapException
говоря "Не определен экземпляр по умолчанию для PluginFamily MongoDb.Driver.MongoServerSettings". Есть конструктор для MongoCollection
это занимает MongoServerSettings
, но я не хочу, чтобы структурная карта использовала этот конструктор, я хочу, чтобы он использовал мой фабричный метод.
Есть идеи, почему он не использует фабричный метод? Это ошибка?
1 ответ
Я разветвил репозиторий для просмотра кода и понял, что это определенно ошибка. Я исправил ошибку и отправил запрос на удаление, надеюсь, он скоро будет объединен и выпущен.