将OData WebAPI控制器移动到单独的程序集

时间:2014-07-22 09:42:52

标签: reflection odata mef asp.net-web-api2

我有一个odata web api项目,其中包含app_start stuff和global.asax文件,并希望将控制器和模型放在单独的程序集中,而不是引用它们。我使用MEF工作但是在注册时遇到了问题。例如

builder.EntitySet<PersonModel>("Persons");

我采用的方法是从我加载的控制器中找出我的类型是什么并将它们存储为字符串但是我无法将它们转换为类型并通过执行以下操作来调用ODataModelBuilder.EntitySet方法:

                MethodInfo method = builder.GetType().GetMethod("EntitySet");
                MethodInfo genericMethod = method.MakeGenericMethod(Type.GetType(type));
                genericMethod.Invoke(builder, null);

问题是Type.GetType(type)返回null,因为该类型位于单独的程序集中。

我不知道如果我克服了这个绊脚石,我现在的方法是否会奏效,并且会对如何实现拆分控制器的建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

您需要在Type.GetType方法中指定程序集名称。这个问题与您的问题类似:How can I get a type from an assembly that is loaded from within another folder?