Esempio n. 1
0
        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));
            });
        }
Esempio n. 2
0
 public CreaterStore(ICreater <T> creater)
 {
     _creater = creater;
 }
Esempio n. 3
0
 public void RegSingleton <S>(Func <S> func) where S : T
 {
     creater = new MagicFuncSingletonCreater <S>(func);
     AddReg(null);
 }
Esempio n. 4
0
 public void Reg(Func <T> func)
 {
     creater = new FuncCreater(func);
     AddReg(null);
 }
Esempio n. 5
0
 public void RegSingleton <S>() where S : T, new()
 {
     creater = new MagicSingletonCreater <S>();
     AddReg(null);
 }
Esempio n. 6
0
 public void Reg <S>() where S : T, new()
 {
     creater = new Creater <S>();
     AddReg(null);
 }
Esempio n. 7
0
 internal void AddCreater <T>(ICreater <T> creater)
 {
     _createrList.Add(creater);
     _createrDictionary.AddOrUpdate(creater.ReturnType, _createrList[creater.ReturnType], _updateCreaterFunc);
 }