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);
                }
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
                }
            }
        }