나는 ioc를 좋아합니다. 이전에, 저는 Java에서 Spring을 사용합니다. 이제 C#에서 DI를 사용하겠습니다. castle.windsor를 발견했습니다. 그러나 그것은 주입 클래스를 지시하는 것처럼 보이지 않습니다.인터페이스를 사용하지 않고 구성 요소를 주입 할 수 있습니까? 윈저
자, 시도해 보니 실패했습니다 .... 누군가, 고칠 수 있도록 도와 줄 수 있습니까? 또는, 어떤 DI 프레임 워크를 사용할 수 있습니까?
Program.cs
using System;
using Castle.MicroKernel.Registration;
using Castle.MicroKernel.SubSystems.Configuration;
using Castle.Windsor;
namespace InjectionConsole
{
class Program
{
static void Main(string[] args)
{
var container = new WindsorContainer();
container.Install(new MainInstaller());
var service1 = container.Resolve<Service1>();
service1.Say();
// clean up, application exits
container.Dispose();
Console.ReadKey();
}
}
class MainInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly());
}
}
}
Service1.cs
using System;
namespace InjectionConsole
{
class Service1
{
private Service2 Service2 { get; set; }
public void Say()
{
Console.WriteLine("Hello, I m Service 1, let me call Service 2");
Service2.Say();
}
}
}
Service2.cs는
using System;
namespace InjectionConsole
{
class Service2
{
public void Say()
{
Console.WriteLine("Hello, I m Service 2");
}
}
}
"제어 반전"의 주된 포인트는 의존 클래스를 반전하여 종속 클래스가 실제 구현이 아닌 서비스의 인터페이스에 종속되도록하는 것입니다. 인터페이스를 사용하지 않는다면 IOC 컨테이너와 언급 된 패턴의 핵심 이점을 없앨 수 있습니다. –