예제 #1
0
파일: User.cs 프로젝트: jiowchern/Regulus
 public User(IAgent agent)
 {
     _Agent = agent;
     _ConnectProvider = new TProvider<IConnect>();
     _OnlineProvider = new TProvider<IOnline>();
     _Machine = new StageMachine();
     _Updater = new Updater();
 }
예제 #2
0
        public static ISerializerStorage <T> CreateCompiled <T, TComp, TBuilder, TProvider>()
            where TComp : ISerExprCompilerOf <T>
            where TBuilder : ISerMethodBuilderOf <T, TComp>, new()
            where TProvider : ISerMatchingProviderOf <T, TComp>, new()
        {
            var provider = new TProvider();
            var builder  = new TBuilder();

            var strategy = provider.Build();

            builder.Strategy = strategy;
            return(new SerializerStorage <T>(builder.Build()));
        }
        public static ISizeOfStorage <T> CreateCompiled <T, TComp, TBuilder, TProvider>()
            where TComp : ICalculateFuncCompilerOf <T>
            where TBuilder : ICalculateFuncBuilderOf <T, TComp>, new()
            where TProvider : ISizeMatchingProviderOf <T, TComp>, new()
        {
            var provider = new TProvider();
            var builder  = new TBuilder();

            var strategy = provider.Build();

            builder.Strategy = strategy;
            return(new SizeOfStorage <T>(builder.Build()));
        }
예제 #4
0
        public static TSingleton Create <TSingleton, TProvider> () where TProvider : ISingletonProvider <TSingleton>, new ()
        {
            var singleton = Get <TSingleton> ();

            if (singleton != null)
            {
                return(singleton);
            }

            // create
            singleton = new TProvider().ProvideSingleton();
            if (singleton == null)
            {
                Debug.LogErrorFormat("SingletonUtil->Create: can NOT create singleton [{0}] by provider [{1}]",
                                     typeof(TSingleton).Name, typeof(TProvider).Name);
                return(default(TSingleton));
            }

            Bind(singleton);
            CallOnCreateIfPossible(singleton);

            return(singleton);
        }
예제 #5
0
        /// <summary>
        /// Add provider <br />
        /// 添加提供者程序
        /// </summary>
        /// <typeparam name="TProvider"></typeparam>
        public void AddProvider <TProvider>() where TProvider : class, ISniffingDescriptorProvider, new()
        {
            var provider = new TProvider();

            AddProvider(provider);
        }
예제 #6
0
 public OfflineStage(IAgent agent, TProvider<IConnect> _ConnectProvider)
 {
     _Agent = agent;
     this._ConnectProvider = _ConnectProvider;
     _Connect = new Connect();
 }
예제 #7
0
 public override void Configure(TProvider provider)
 {
     configureProvider?.Invoke((TSpecialization)provider);
 }
예제 #8
0
 public abstract void Configure(TProvider provider);
예제 #9
0
 public OnlineStage(IAgent agent, TProvider<IOnline> provider)
 {
     _Agent = agent;
     _OnlineProvider = provider;
     _Online = new Online(agent);
 }