आप नीचे दिए गए की तरह कर सकते हैं। लेकिन यह कमाल नहीं है क्योंकि, SharepointClass को निर्भरता इंजेक्शन कंटेनर द्वारा शेयरपॉइंट द्वारा तुरंत चालू किया जाता है। तो अब के लिए, SharepointClass में आप अपनी निर्भरता को हल कर सकते हैं जैसे Ioc.Resolve() और IService उदाहरण की गहरी निर्भरता विंडसर द्वारा इंजेक्शन दी जाएगी।
public interface IMyCode
{
void Work();
}
public class MyCode : IMyCode
{
public void Work()
{
Console.WriteLine("working");
}
}
public interface IService
{
void DoWork();
}
public class MyService : IService
{
private readonly IMyCode _myCode;
public MyService(IMyCode myCode)
{
_myCode = myCode;
}
public void DoWork()
{
Console.WriteLine(GetType().Name + " doing work.");
_myCode.Work();
}
}
public class Ioc
{
private static readonly object Syncroot = new object();
private readonly IWindsorContainer _container;
private static Ioc _instance;
private Ioc()
{
_container = new WindsorContainer();
//register your dependencies here
_container.Register(Component.For<IMyCode>().ImplementedBy<MyCode>());
_container.Register(Component.For<IService>().ImplementedBy<MyService>());
}
public static Ioc Instance
{
get
{
if (_instance == null)
{
lock (Syncroot)
{
if (_instance == null)
{
_instance = new Ioc();
}
}
}
return _instance;
}
}
public static T Resolve<T>()
{
return Instance._container.Resolve<T>();
}
}
और अपने SharePoint वर्ग
public class SharepointClass : SharepointWebpart //instantiated by sharepoint
{
public IService Service { get { return Ioc.Resolve<IService>(); } }
public void Operation()
{
Console.WriteLine("this is " + GetType().Name);
Service.DoWork();
}
}
अच्छा सवाल में;) – Rookian