내가 언급 한 ioc 프레임 워크는 Unity, Autofac, 구조 맵 등입니다.왜 일부 ioc 프레임 워크는 너무 복잡합니까? 단지 몇 줄의 코드 만이 작업을 수행 할 수있는 것 같습니다.
public class Ioc
{
private static readonly Dictionary<Type, Type> mapper = new Dictionary<Type, Type>();
public static T CreateInstance<T>()
{
var t = typeof (T);
if (mapper.ContainsKey(t))
{
return (T) Activator.CreateInstance(mapper[t]);
}
return Activator.CreateInstance<T>();
}
public static void Map<TInterface, TImplementation>() where TImplementation : TInterface
{
var inferfaceType = typeof (TInterface);
var implementationType = typeof (TImplementation);
if (mapper.ContainsKey(inferfaceType))
{
mapper[inferfaceType] = implementationType;
}
else
{
mapper.Add(inferfaceType, implementationType);
}
}
}
그리고 그것은 다음과 같이 사용할 수 있습니다 :
코드는
Ioc.Map<IUserService, UserService>();
Ioc.Map<IUserBusiness, UserBusiness>();
및
var userService = Ioc.CreateInstance<IUserService>()
그것은 바로 IOC 프레임 워크를 사용하는 방식처럼 사용된다 .
성능간에 큰 차이가 있습니까?
귀하의 솔루션은'UserService'가'UserBusiness'을 필요로하는 경우를 어떻게 처리합니까? 솔루션은 'UserService'가 싱글 톤이어야하지만 'UserBusiness'는 요청 당 (예 : 웹 애플리케이션)이어야하는 경우를 어떻게 처리합니까? 단일 어셈블리에서 여러 서비스를 사용하는 경우 서비스 확장 규모는 어떻게됩니까? –