示例#1
0
 public override void getInfo(SaveInfo info)
 {
     base.getInfo(info);
     info.AddValue("BehaviorDataType", DefaultTypeFinder.CreateShortTypeString(behaviorTemplate.GetType()));
     info.AddValue("UpdatePhase", behaviorTemplate.UpdatePhase);
     ReflectedSaver.SaveObject(behaviorTemplate, info, BehaviorSaveMemberScanner.Scanner);
     behaviorTemplate.callCustomSave(info);
 }
示例#2
0
 public void writeHeader(ObjectIdentifier objectId, int version)
 {
     xmlWriter.WriteStartElement(SAVEABLE_ELEMENT);
     xmlWriter.WriteAttributeString(TYPE_ATTRIBUTE, DefaultTypeFinder.CreateShortTypeString(objectId.ObjectType));
     xmlWriter.WriteAttributeString(ID_ATTIBUTE, objectId.ObjectID.ToString());
     if (version > 0)
     {
         xmlWriter.WriteAttributeString(VERSION_ATTIBUTE, version.ToString());
     }
 }
示例#3
0
        public override void writeValue(SaveEntry entry)
        {
            XmlWriter xmlWriter = xmlSaver.XmlWriter;

            xmlWriter.WriteStartElement(elementName);
            xmlWriter.WriteAttributeString(NAME_ENTRY, entry.Name);
            xmlWriter.WriteAttributeString(TYPE, DefaultTypeFinder.CreateShortTypeString(entry.ObjectType));
            if (entry.Value != null)
            {
                xmlWriter.WriteString(entry.Value.ToString());
            }
            xmlWriter.WriteEndElement();
        }
示例#4
0
        public IServiceProvider ConfigureServices(IServiceCollection services, IConfiguration configuration)
        {

            var typeFinder = new DefaultTypeFinder();



            //register Plugins dependancies 

            var startupConfigurations = typeFinder.FindClassesOfType<IMiniTaskStartUp>();
            var instances = startupConfigurations
            .Select(startup => (IMiniTaskStartUp)Activator.CreateInstance(startup));
            foreach (var instance in instances)
                instance.ConfigureServices(services, configuration);

            return _serviceProvider;
            
          
        }
示例#5
0
        public void writeHeader(ObjectIdentifier objectId, int version)
        {
            jsonWriter.WriteStartObject();

            //Write saveable header
            jsonWriter.WritePropertyName(DefaultTypeFinder.CreateShortTypeString(objectId.ObjectType));
            var format = jsonWriter.Formatting;

            jsonWriter.Formatting = Newtonsoft.Json.Formatting.None;
            jsonWriter.WriteStartObject();

            jsonWriter.WritePropertyName("id");
            jsonWriter.WriteValue(NumberParser.ToString(objectId.ObjectID));

            if (version != 0)
            {
                jsonWriter.WritePropertyName("version");
                jsonWriter.WriteValue(version);
            }

            jsonWriter.WriteEndObject();
            jsonWriter.Formatting = format;
        }
 public void getInfo(SaveInfo info)
 {
     info.AddValue("TrackName", TrackName);
     info.AddValue("TypeName", DefaultTypeFinder.CreateShortTypeString(type));
 }
 private ShowPropSubActionPrototype(LoadInfo info)
 {
     TrackName = info.GetString("TrackName");
     type      = DefaultTypeFinder.FindType(info.GetString("TypeName"));
 }
示例#8
0
        /// <summary>
        /// Search for a given type using an assemblyQualifiedName. First this
        /// will use the standard Type.GetType function. If that fails it will
        /// search all the plugin loaded assemblies for the type directly. If
        /// that fails the function will return null. If sucessful the matching
        /// type will be returned.
        /// </summary>
        /// <remarks>
        /// This function could be optimized. For now it will search all loaded
        /// assemblies in a loop when the Type.GetType function call fails.
        /// </remarks>
        /// <param name="assemblyQualifiedName">The AssemblyQualifiedName to search for.</param>
        /// <returns>The matching type or null if the type cannot be found.</returns>
        internal Type findType(String assemblyQualifiedName)
        {
            Type type;

            if (!typeCache.TryGetValue(assemblyQualifiedName, out type))
            {
                type = Type.GetType(assemblyQualifiedName, false);
                //If that fails do the slow search.
                if (type == null)
                {
                    String typeName = DefaultTypeFinder.GetTypeNameWithoutAssembly(assemblyQualifiedName);

                    //If there is not yet a renamed type map, create it.
                    if (renamedTypeMap == null)
                    {
                        renamedTypeMap = new RenamedTypeMap();
                        foreach (var plugin in loadedPlugins)
                        {
                            plugin.setupRenamedSaveableTypes(renamedTypeMap);
                        }
                    }

                    //Check the rename cache
                    if (!renamedTypeMap.tryGetType(typeName, out type))
                    {
                        Log.Warning("TypeSearch: Had to do slow search looking for type \'{0}\'. You should fix the source file searching for this type or add an entry to the renamed type maps for '{1}'", assemblyQualifiedName, typeName);

                        foreach (Assembly assembly in pluginAssemblies)
                        {
                            type = assembly.GetType(typeName);
                            if (type != null)
                            {
                                break;
                            }
                        }
                        //If that fails search all loaded assemblies.
                        if (type == null)
                        {
                            foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
                            {
                                type = assembly.GetType(typeName);
                                if (type != null)
                                {
                                    break;
                                }
                            }
                        }
                    }

                    //If we found something put it in the slow search cache so it can be found quicker later
                    if (type != null)
                    {
                        Log.Warning("TypeSearch: Replacement found for type \'{0}\'. Replacement type is \'{1}\'", assemblyQualifiedName, type.AssemblyQualifiedName);
                    }
                    else
                    {
                        Log.Warning("TypeSearch: Unable to find replacement for type \'{0}\'.", assemblyQualifiedName);
                    }
                }
                typeCache.Add(assemblyQualifiedName, type);
            }
            return(type);
        }
示例#9
0
文件: AppContext.cs 项目: radtek/EBS
        public static void Init()
        {
            var builder = new ContainerBuilder();

            // builder.RegisterInstance(LogFactory.CreateLoger("log4Net")).As<ILog>();
            //注册程序集
            //  builder.RegisterType<Log4NetWritter>().As<ILogger>();
            builder.RegisterInstance(NLog.LogManager.GetCurrentClassLogger()).As <NLog.ILogger>();
            builder.RegisterType <NLogWriter>().As <ILogger>();
            builder.RegisterType <ExcelService>().As <IExcel>();
            // register dependency
            var typeFinder = new DefaultTypeFinder();
            // builder.RegisterInstance(typeFinder).As<ITypeFinder>().SingleInstance();
            // var drTypes = typeFinder.FindClassesOfType<IDependencyRegistrar>();
            // var drInstances = new List<IDependencyRegistrar>();
            // foreach (var drType in drTypes)
            //     drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType));
            //// drInstances = drInstances.AsQueryable().ToList();
            // foreach (var dependencyRegistrar in drInstances)
            // {
            //     dependencyRegistrar.Register(builder, typeFinder);
            // }

            //注册各层业务组件
            var assemblies = typeFinder.LoadAssemblies();

            //builder.RegisterAssemblyTypes(assemblies).AsImplementedInterfaces();
            builder.RegisterAssemblyTypes(assemblies).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces();
            builder.RegisterAssemblyTypes(assemblies).Where(t => t.Name.EndsWith("Facade")).AsImplementedInterfaces();

            //register event
            var consumers = typeFinder.FindClassesOfType(typeof(IConsumer <>)).ToList();

            foreach (var consumer in consumers)
            {
                builder.RegisterType(consumer)
                .As(consumer.FindInterfaces((type, criteria) =>
                {
                    var isMatch = type.IsGenericType && ((Type)criteria).IsAssignableFrom(type.GetGenericTypeDefinition());
                    return(isMatch);
                }, typeof(IConsumer <>)))
                .InstancePerLifetimeScope();
            }
            // register validator
            //var validators = typeFinder.FindClassesOfType(typeof(IValidator<>)).ToList();
            //foreach (var validator in validators)
            //{
            //    builder.RegisterType(validator)
            //        .As(validator.FindInterfaces((type, criteria) =>
            //        {
            //            var isMatch = type.IsGenericType && ((Type)criteria).IsAssignableFrom(type.GetGenericTypeDefinition());
            //            return isMatch;
            //        }, typeof(IValidator<>)))
            //        .InstancePerLifetimeScope();
            //}

            builder.RegisterType <EventPublisher>().As <IEventPublisher>().SingleInstance();
            builder.RegisterType <SubscriptionService>().As <ISubscriptionService>().SingleInstance();
            builder.RegisterType <MemoryCacheManager>().As <ICacheManager>().SingleInstance();

            _autofacContainer = builder.Build();
            // 初始化容器管理对象
            Singleton <IContainerManager> .Instance = new AutofacContainer(_autofacContainer);
        }