I has a C# library like this:
public SomeClass<T> : ISomeClass<T>{
public SomeClass(IMainClass mainClass){ this._mainclass=mainClass }
}
public MainClass : IMainClass {
private Dictionary<string,dynamic> _myDic;
public MainClass() { /* some code */ }
public ISomeClass<T> ReturnSomeClass()
{
if(_myDic.Contains(ISomeClass<T>)
return _myDic.Value //**someclass<T> type
//add to _myDic
return new SomeClass<T>();
}
}
public OtherClass<T> : IOtherClass<T> {
public OtherClass(ISomeClass<T> someClass) { this._someClass=someClass }
}
Next, I register this classes in Microsoft Unity for DI.
class Boot{
public void Registering(){
container.RegisterType<ISomeClass,SomeClass>();
container.RegisterType<IMainClass,MainClass>();
container.RegisterType<IOtherClass,OtherClass>();
}
}
When my client class is Calling container.Resolve< IMainclass >(), ctor in mainClass is fire and a instance of MainClass is created.Now where container.Resolve< IOtherClass >() is calling in client class ctor for that is fire and by DI a new SomeClass is created.As well as by DI on creating SomeClass, ctor for this class is calling and a new mainClass is created.
how can be only one MainClass created object on both Resolve by container in my client class?