ASP .NET MVC コントローラーから呼び出された場合、GetMethod は public static メソッドを検出しません。(コンソール アプリケーションからは正常に動作します)。
このダミーSaveEntityGenericWrapper
メソッドを使用して解決します。
SaveEntityGenericWrapper
コードから削除するには?
ASP .NET MVC 2 コントローラーから呼び出された場合、GetMethod("SaveEntityGeneric")
返されるのnull
に機能するのはなぜですか?GetMethod("SaveEntityGenericWrapper")
SaveEntityGeneric
MVC2 で部分信頼が使用されている場合、プライベートにする方法は?
public class EntityBase() {
public void SaveEntity(EntityBase original)
{
var method = GetType().GetMethod("SaveEntityGenericWrapper");
// why this line returns null if called from ASP .NET MVC 2 controller:
// method = GetType().GetMethod("SaveEntityGeneric");
var gm = method.MakeGenericMethod(GetType());
gm.Invoke(this, new object[] { original, this });
}
// Dummy wrapper reqired for mvc reflection call only.
// How to remove it?
public List<IList> SaveEntityGenericWrapper<TEntity>(TEntity original, TEntity modified)
where TEntity : EntityBase, new()
{
return SaveEntityGeneric<TEntity>(original, modified);
}
public static List<IList> SaveEntityGeneric<TEntity>(TEntity original, TEntity modified)
where TEntity : EntityBase, new()
{ ... actual work is performed here }
}