私は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コンテナのコアメリットと前述のパターンが排除されます。 –