我需要检查传入的Func<TIn, TOut>
是否有特定属性。
到目前为止,我有:
var methodInfo = cachedMethod.GetMethodInfo();
var isCachable = methodInfo.CustomAttributes.
Any(x => x.AttributeType == typeof(CachedAttribute));
但是我发现CustomAttributes属性为空。
找到应用于传入函数的属性的正确方法是什么?在我的例子中,func是另一个类中的静态方法。
更新
这是一个小样本,展示了我如何尝试使用它:
HTML帮助:
public static IHtmlString CachedPartial<TModel>(this HtmlHelper helper,
string partialName,
TModel model,
Func<string, string> cachedMethod)
{
var methodInfo = cachedMethod.GetMethodInfo();
var isCachable = methodInfo.IsDefined(typeof (CachedAttribute));
if (!isCachable)
{
throw new Exception("...");
}
return new MvcHtmlString(cachedMethod("foo"));
}
缓存的方法
[Cached]
public static string GenrateSiteMapGraphHtml(string siteCode)
{
return "Foo";
}
这是从Razor视图调用的:
@Html.CachedPartial("Foo",
Model,
HtmlHelperExtensions.GenrateSiteMapGraphHtml)
答案 0 :(得分:0)
我可能不太明白你的问题是什么,但我会建议两件事:
您需要确保CustomAttributes不为空,请使用
if(methodInfo.CustomAttributes!= NULL)//或者该类型的属性为NULL的类似物 {/ 某些行动 /}
在我的例子中,func是另一个类中的静态方法
那么去看看你试图调用那个静态方法的代码区域是否可见该类