##// END OF EJS Templates
minor fixes in the service locator class
cin -
r87:79badb3ed195 v2
parent child
Show More
@@ -165,7 +165,6 namespace Implab {
165 165 /// <typeparam name="T">Тип регистрируемого сервиса.</typeparam>
166 166 /// <param name="activator">Фабрика для создания/получения объекта, предоставляющего сервис.</param>
167 167 /// <param name = "cleanup">Метод для освобождения экземпляра сервиса, будет вызыван при освобождении сервис-локатора.</param>
168 /// <exception cref="InvalidOperationException">Указанный сервис уже зарегистрирован.</exception>
169 168 /// <remarks>При освобождении сервис-локатора, сервисы полученные в результате активации также будут освобождены.</remarks>
170 169 public void Register<T>(Func<T> activator, Action<T> cleanup) {
171 170 Safe.ArgumentNotNull(activator, "activator");
@@ -196,12 +195,11 namespace Implab {
196 195 }
197 196
198 197 /// <summary>
199 /// Регистрирует объект, предоставляющий сервис.
198 /// Регистрирует объект, предоставляющий сервис. Повторная регистрация отменяет уже существующую.
200 199 /// </summary>
201 200 /// <typeparam name="T">Тип регистрируемого сервиса.</typeparam>
202 201 /// <param name="service">Объект, предоставляющий сервис.</param>
203 202 /// <param name="shared">Признак того, что объект является разделяемым и сервис-локатор не должен его освобождать.</param>
204 /// <exception cref="InvalidOperationException">Указанный сервис уже зарегистрирован.</exception>
205 203 public void Register<T>(T service, bool shared) {
206 204 Safe.ArgumentNotNull(service, "service");
207 205
@@ -219,9 +217,12 namespace Implab {
219 217
220 218 ServiceEntry se;
221 219 if (m_services.TryGetValue(serviceType, out se)) {
220 if (se.origin != null) {
221 var pe = m_services[se.origin];
222 pe.associated.Remove(serviceType);
223 }
222 224 // освобождаем ресурсы
223 if (se.service != null && !se.shared)
224 ((IDisposable)se.service).Dispose();
225 se.Dispose();
225 226 m_services.Remove(serviceType);
226 227
227 228 // убираем связанные записи
General Comments 0
You need to be logged in to leave comments. Login now