/*
Kooboo is a content management system based on ASP.NET MVC framework. Copyright 2009 Yardi Technology Limited.
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.kooboo.com/gpl3/.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
namespace Everest.Library.ExtensionMethod{
public static class UnityExtensions
{
public class UnityExtensionWithTypeTracking : UnityContainerExtension
{
internal readonly List<string> registeredTypes = new List<string>();
protected override void Initialize()
{
Context.RegisteringInstance += (sender, e) => registeredTypes.Add(GetTypeKey(e.RegisteredType, e.Name));
Context.Registering += (sender, e) => registeredTypes.Add(GetTypeKey(e.TypeFrom, e.Name));
}
}
public static bool Exists<T>(this IUnityContainer container, string name)
{
string typeKey = GetTypeKey(typeof(T), name);
return container.Configure<UnityExtensionWithTypeTracking>().registeredTypes.Exists(s => s.Equals(typeKey, StringComparison.InvariantCultureIgnoreCase));
}
private static string GetTypeKey(Type type, string name)
{
return type.ToString() + (string.IsNullOrEmpty(name) ? "" : name);
}
}
}
|