使用Reflection(非泛型)在unity 2.0中注册类型

时间:2017-07-05 07:41:47

标签: c# reflection unity-container

我需要根据命名空间过滤动态注册我的类型。

这是我的代码:

 var q = from t in AppDomain.CurrentDomain.GetAssemblies()
                  .SelectMany(s => s.GetTypes())
                    where (t.IsInterface || t.IsClass) && t.Namespace == namespaceToAdd
                    select t;

            var types = q.ToList();

            types.Where(t => t.IsInterface).Select(i=>               
                    {
                        var matchingClass = types.Where(c => c.IsClass && i.IsAssignableFrom(c)).FirstOrDefault();
                         if (matchingClass != null)
                        {
                            container.RegisterType(i, matchingClass, null, new ContainerControlledLifetimeManager())();
                        }

                    });

但容器调用失败:"方法名称"预期。 " I"是反射的界面 " matchingClass"相应的实现类型。

我已经在SO中阅读了有关此主题但未找到我的解决方案(切换到Unity 3.0,这不是一个选项)。

Msdn也没有帮助(https://msdn.microsoft.com/en-us/library/dn507499(v=pandp.30).aspx

代码将在之后被清除(我只使用一种形式的linq,一旦这个工作:) :)

我错过了什么?

0 个答案:

没有答案