Пример #1
0
 public static void ActiveCorePreferencesRenders()
 {
     PreferencesRenderManager.AddPreferencesRenderer <DateRenderer>();
     PreferencesRenderManager.AddPreferencesRenderer <CallerMemberNameRenderer>();
     PreferencesRenderManager.AddPreferencesRenderer <CallerFilePathRenderer>();
     PreferencesRenderManager.AddPreferencesRenderer <CallerLineNumberRenderer>();
     PreferencesRenderManager.AddPreferencesRenderer <EventIdRenderer>();
     PreferencesRenderManager.AddPreferencesRenderer <EventNameRenderer>();
 }
Пример #2
0
 private static void Core(IEnumerable <Type> givenTypes)
 {
     foreach (var type in givenTypes)
     {
         Console.WriteLine(type.FullName);
         var reflector       = type.GetReflector();
         var sinkMode        = PreferencesSinkRendererType.IsAssignableFrom(type);
         var declareInfos    = reflector.GetCustomAttributes <RendererAttribute>().Where(x => !string.IsNullOrWhiteSpace(x.Name)).ToList();
         var constructorInfo = type.GetConstructors().FirstOrDefault(x => !x.GetParameters().Any());
         if (constructorInfo == null)
         {
             throw new InvalidOperationException("Preferences renderer must has a args-less constructor.");
         }
         var instance = constructorInfo.GetReflector().Invoke();
         if (declareInfos.Any())
         {
             if (sinkMode && instance is IPreferencesSinkRenderer sinkRenderer)
             {
                 PreferencesRenderManager.AddPreferencesSinkRenderer(declareInfos.Select(x => (x.SinkPrefix, x.Name)).ToList(), sinkRenderer);
             }
             else if (instance is IPreferencesRenderer renderer)
             {
                 PreferencesRenderManager.AddPreferencesRenderer(declareInfos.Select(x => x.Name).ToList(), renderer);
             }
             else
             {
                 throw new InvalidOperationException("Unknown renderer.");
             }
         }
         else
         {
             if (sinkMode && instance is IPreferencesSinkRenderer sinkRenderer)
             {
                 PreferencesRenderManager.AddPreferencesSinkRenderer(sinkRenderer);
             }
             else if (instance is IPreferencesRenderer renderer)
             {
                 PreferencesRenderManager.AddPreferencesRenderer(renderer);
             }
             else
             {
                 throw new InvalidOperationException("Unknown renderer.");
             }
         }
     }
 }