私のASP.NET MVCアプリケーションでは、小さなヘルパーを使用してすべてのコントローラを反復処理しています。 このヘルパーは、私のMVCアプリケーションとは別のアセンブリにあり、参照しています。Assembly.GetCallingAssembly()を使用して呼び出しアセンブリを返しません
ヘルパーでAssembly.GetCallingAssembly()メソッドを呼び出すと、MVCアプリケーションアセンブリが返されませんが、代わりにヘルパーアセンブリが返されるという問題があります。これは、すべてが私のコントローラはMVCアプリのアセンブリで暮らしており、私はそれを反映する必要があります。
マイコード:
**The view code(MVC app assembly):**
<nav>
<ul id="menu">
@foreach(var item in new MvcHelper().GetControllerNames())
{
@Html.ActionMenuItem(
(string)HttpContext.GetGlobalResourceObject("StringsResourse", item), "Index",
item)
}
</ul>
</nav>
**The Helper code(independent assembly):**
public class MvcHelper
{
public List<string> GetControllerNames()
{
var controllerNames = new List<string>();
GetSubClasses<Controller>().ForEach(
type => controllerNames.Add(type.Name));
return controllerNames;
}
private static List<Type> GetSubClasses<T>()
{
return Assembly.GetCallingAssembly().GetTypes().Where(
type => type.IsSubclassOf(typeof(T))).ToList();
}
}
私はここで間違って何をしているのですか? GetCallingAssembly
MSDN docsから
+1良い選択肢を提案します。 –