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); }
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()); } }
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(); }
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; }
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")); }
/// <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); }
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); }