获取函数的属性
本文关键字:属性 函数 获取 | 更新日期: 2023-09-27 17:50:14
我需要检查传入的Func<TIn, TOut>
的特定属性。
到目前为止,我有:
var methodInfo = cachedMethod.GetMethodInfo();
var isCachable = methodInfo.CustomAttributes.
Any(x => x.AttributeType == typeof(CachedAttribute));
然而,我发现CustomAttributes属性是空的。
找到应用于传入函数的属性的正确方法是什么?在我的例子中,函数是另一个类中的静态方法。
下面是一个小示例,展示了我是如何使用它的:
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)
我可能不太明白你的问题是什么,但我想建议两件事:
-
你需要确保CustomAttributes不是空的,使用
if (methodInfo.CustomAttributes!=NULL)//或该类型属性的类似NULL的值{/一些行动/}
- 你不能弄清楚为什么这个属性是空的。首先要检查的是能见度。
在我的例子中,函数是另一个类
中的静态方法
检查一下这个类在你调用静态方法的代码区域是否可见