如果从元数据上看特性类只是在函数里被实例化了一下是做不到改变函数的返回值的。
但是我在java的一个框架里看到了他们的一个注解应该和c#的特性差不多。
那是一个缓存框架在方法的上面写一个注解(特性)表明此方法可以使用缓存然后这个注解
有一个构造函数参数应该是作为key在缓存数据中取值,我想问这里应该是改变了那个函数的
返回值了的(有缓存返回缓存数据无缓存走自己数据库查询) C# 特性可以实现么有没有什么
相关技术名字我可以自己去查阅
谢谢
不知道你具体想问什么,但是如果你的函数本身读取特性,然后将其中的值作为返回值,这个是可以的。
using System;
using System.Linq;
class ReturnValueAttribute : Attribute
{
public object val { get; set; }
public ReturnValueAttribute(object v) {val = v; }
}
public class Test
{
public static void Main()
{
// your code goes here
int i = foo();
Console.WriteLine(i);
}
[ReturnValue(100)]
public static int foo()
{
var rtn = typeof(Test).GetMethod("foo")
.GetCustomAttributes(typeof(ReturnValueAttribute), false).FirstOrDefault();
return (int)((ReturnValueAttribute)rtn).val;
}
}