Определение экземпляра AppDomain с помощью Ninject 2? - PullRequest
0 голосов
/ 10 ноября 2011

Я создаю ILinkExtractor экземпляр следующим образом:

void myMethod() {
    AppDomain webDomain = createWebProtectedAppDomain();
    ObjectHandle linkExtractorObj = webDomain.CreateInstanceFrom(assemblyPath, typeof(LinkExtractor).FullName);
    ILinkExtractor linkExtractor = (ILinkExtractor)linkExtractorObj.Unwrap();
    // use it...
    // ...
    // then release the appdomain...
    AppDomain.Unload(webDomain);
}

Я бы хотел использовать это вместо , скрывая всю сложность AppDomain :

void myMethod() {
    ILinkExtractor linkExtractor = kernel.Get<ILinkExtractor>();
    // use it...
    // ...
    // then release (transparently) the appdomain...
}

Другими словами, я хотел бы использовать ninject 2, чтобы связать информацию AppDomain с моим экземпляром , чтобы ограничить ее использование в Интернете, но вызывающие стороны должны скрывать это поведение.

Можно ли добиться такого поведения, используя или расширяя ninject 2?

Спасибо!

1 Ответ

0 голосов
/ 10 ноября 2011

Я бы создал ILinkExtractorManager, который реализует IDisposable для управления временем жизни ILinkExtractor.затем используйте предложение using:

using( ILinkExtractorManager manager = kernel.Get<ILinkExtractorManager>() )
{
    ILinkExtractor extractor = manager.GetExtractor();

    // usage of extractor

}

, когда использование закончится, Dispose () будет вызван на диспетчере, который может выгрузить домен приложения в это время.

...