コード例 #1
0
        private static TypeParser GetParser(MelonPreferences_Entry.TypeEnum type)
        {
            TypeParser parser = null;

            if (type == MelonPreferences_Entry.TypeEnum.UNKNOWN)
            {
                return(parser);
            }
            lock (TypeParserDict_TypeEnum)
            {
                if (TypeParserDict_TypeEnum.TryGetValue(type, out TypeParser nparser))
                {
                    parser = nparser;
                }
                else
                {
                    var args = new TypeParser.ResolveEventArgs {
                        TypeEnum = type
                    };
                    ResolveEvents?.Invoke(null, args);
                    //if (args.TypeParser == null)
                    //    throw new NullReferenceException("No Parser for Type " + MelonPreferences.TypeEnumToTypeName(type));
                    if ((args.TypeParser != null) && (args.TypeParser.GetTypeEnum() == type))
                    {
                        parser = TypeParserDict_TypeEnum[type] = args.TypeParser;
                    }
                }
            }
            return(parser);
        }
コード例 #2
0
        private static TypeParser GetParser(Type type)
        {
            TypeParser parser = null;

            lock (TypeParserDict_ReflectedType)
            {
                if (TypeParserDict_ReflectedType.TryGetValue(type, out TypeParser nparser))
                {
                    parser = nparser;
                }
                else
                {
                    var args = new TypeParser.ResolveEventArgs {
                        ReflectedType = type
                    };
                    ResolveEvents?.Invoke(null, args);
                    //if (args.TypeParser == null)
                    //    throw new NullReferenceException("No Parser for Type " + type.Name);
                    if ((args.TypeParser != null) && (args.TypeParser.GetReflectedType() == type))
                    {
                        parser = TypeParserDict_ReflectedType[type] = args.TypeParser;
                    }
                }
            }
            return(parser);
        }
コード例 #3
0
 static public Assembly ResolvingTestIsolated(AssemblyLoadContext alc, AssemblyName assemblyName)
 {
     if (assemblyName.Name.Contains("TestIsolatedLoad") && (ResolveEvent == ResolveEvents.NoEvent))
     {
         ResolveEvent = ResolveEvents.ExpectedEvent;
     }
     return(null);
 }
コード例 #4
0
 static public Assembly ResolvingTestIsolated(AssemblyLoadContext alc, AssemblyName assemblyName)
 {
     throw new ArgumentException("Can you hear me now?");
     if (assemblyName.Name.Contains("TestIsolatedLoad") && (ResolveEvent == ResolveEvents.NoEvent))
     {
         ResolveEvent = ResolveEvents.ExpectedEvent;
     }
     return(null);
 }
コード例 #5
0
 static public void Assert(ResolveEvents expected, Action action)
 {
     ResolveEvent = ResolveEvents.NoEvent;
     try
     {
         action();
     }
     catch
     {
     }
     finally
     {
         TestLibrary.Assert.AreEqual(expected, ResolveEvent);
     }
 }
コード例 #6
0
 static public void Assert(ResolveEvents expected, Action action)
 {
     ResolveEvent = ResolveEvents.NoEvent;
     try
     {
         action();
     }
     catch
     {
     }
     finally
     {
         throw new Exception();
     }
 }