public static void GetFormatters(IMessagePackProvider provider, IMessagePackContext context, IDictionary <Type, IMessagePackFormatter> formatters, int formatterType, Assembly assembly = null) { if (provider == null) { throw new ArgumentNullException(nameof(provider)); } if (context == null) { throw new ArgumentNullException(nameof(context)); } if (formatters == null) { throw new ArgumentNullException(nameof(formatters)); } foreach (Type type in AssemblyUtility.GetBrowsableTypes <MessagePackFormatterAttribute>(assembly)) { var attribute = type.GetCustomAttribute <MessagePackFormatterAttribute>(false); if (attribute.Type == formatterType && TypesUtility.TryCreateType(type, new object[] { provider, context }, out IMessagePackFormatter formatter)) { formatters.Add(formatter.TargetType, formatter); } } }
public void GetBrowsableTypes() { ICollection <Type> types = new List <Type>(); AssemblyUtility.GetBrowsableTypes(types, typeof(AssemblyBrowsableTypeAttribute)); Assert.AreEqual(3, types.Count); Assert.Contains(typeof(TestTarget), (ICollection)types); }
public void GetBrowsableTypesEnumerableAll() { string[] types = AssemblyUtility.GetBrowsableTypes(typeof(AssemblyBrowsableTypeAttribute)).Select(x => x.Name).ToArray(); Assert.AreEqual(3, types.Length); Assert.Contains("TestBrowsableType", types); Assert.Contains("TestBrowsableType2", types); Assert.Contains("TestTarget", types); }
public void GetBrowsableTypesEnumerableAssembly() { AssemblyUtility.TryGetBrowsableAssembly("TestAssembly", out Assembly assembly); string[] types = AssemblyUtility.GetBrowsableTypes(typeof(AssemblyBrowsableTypeAttribute), assembly).Select(x => x.Name).ToArray(); Assert.AreEqual(2, types.Length); Assert.Contains("TestBrowsableType", types); Assert.Contains("TestBrowsableType2", types); }
public void GetBrowsableTypesFromAssembly() { ICollection <Type> types = new List <Type>(); AssemblyUtility.TryGetBrowsableAssembly("TestAssembly", out Assembly assembly); AssemblyUtility.GetBrowsableTypes(types, typeof(AssemblyBrowsableTypeAttribute), assembly); Assert.AreEqual(2, types.Count); Assert.Contains("TestBrowsableType", types.Select(x => x.Name).ToArray()); Assert.Contains("TestBrowsableType2", types.Select(x => x.Name).ToArray()); }
public static void GetProviders(ICollection <IMessagePackProvider> providers, int formatterType, Assembly assembly = null) { if (providers == null) { throw new ArgumentNullException(nameof(providers)); } foreach (Type type in AssemblyUtility.GetBrowsableTypes <MessagePackProviderAttribute>(assembly)) { var attribute = type.GetCustomAttribute <MessagePackProviderAttribute>(false); if (attribute.Type == formatterType && TypesUtility.TryCreateType(type, out IMessagePackProvider provider)) { providers.Add(provider); } } }