Ejemplo n.º 1
0
        public void PostConstruction(IRyuExtensionArguments args)
        {
            var ryu = args.Container;

            // enumerate all loaded nondynamic types in current appdomain.
            // Note that ryu loads all neighboring assemblies into appdomain so
            // this is basically all dependencies our program has referenced at build.
            var allLoadedTypes = AppDomain.CurrentDomain.GetAssemblies()
                                 .Where(a => !a.IsDynamic)
                                 .SelectMany(x => x.ExportedTypes)
                                 .ToList();

            // Filter to VoxTypes implementations to load
            var voxTypesTypesToLoad = allLoadedTypes.Where(t => t != typeof(VoxTypes) && typeof(VoxTypes).IsAssignableFrom(t))
                                      .Where(t => !t.IsAbstract).ToList();

            foreach (var voxTypeToLoad in voxTypesTypesToLoad)
            {
                logger.Trace($"Loading VoxTypes {voxTypeToLoad.FullName}.");

                var parameterlessCtor = voxTypeToLoad.GetConstructor(Type.EmptyTypes);
                if (parameterlessCtor == null)
                {
                    logger.Trace("Not loading as it lacks default ctor.");
                }
                else
                {
                    var instance = (VoxTypes)Activator.CreateInstance(voxTypeToLoad);
                    Globals.Serializer.ImportTypes(instance);
                }
            }

            // Find type serializers registered via ryu:
            var ryuTypeSerializers = ryu.Find <ITypeSerializer>();

            if (ryuTypeSerializers.Any())
            {
                throw new NotImplementedException("Vox doesn't support ITypeSerializer yet.");
            }
        }
Ejemplo n.º 2
0
 public void PostInitialization(IRyuExtensionArguments args)
 {
 }
Ejemplo n.º 3
0
 public void PreConstruction(IRyuExtensionArguments args)
 {
 }
Ejemplo n.º 4
0
 public void Loaded(IRyuExtensionArguments args)
 {
 }