public void Add <T>(ICreater <T> creater) { var retType = creater.ReturnType; _createrList.AddOrUpdate(retType, x => new CreaterStore <T>(creater), (x, y) => { if (y.Creater.DeclareMode == DeclareMode.Implicit) { return(new CreaterStore <T>(creater)); } throw new ArgumentException(string.Format("既に同じ型が登録されています[{0}]", retType)); }); }
public CreaterStore(ICreater <T> creater) { _creater = creater; }
public void RegSingleton <S>(Func <S> func) where S : T { creater = new MagicFuncSingletonCreater <S>(func); AddReg(null); }
public void Reg(Func <T> func) { creater = new FuncCreater(func); AddReg(null); }
public void RegSingleton <S>() where S : T, new() { creater = new MagicSingletonCreater <S>(); AddReg(null); }
public void Reg <S>() where S : T, new() { creater = new Creater <S>(); AddReg(null); }
internal void AddCreater <T>(ICreater <T> creater) { _createrList.Add(creater); _createrDictionary.AddOrUpdate(creater.ReturnType, _createrList[creater.ReturnType], _updateCreaterFunc); }