Метод фабрики экземпляра 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 ответ

Решение

Я разветвил репозиторий для просмотра кода и понял, что это определенно ошибка. Я исправил ошибку и отправил запрос на удаление, надеюсь, он скоро будет объединен и выпущен.

Другие вопросы по тегам