liujiaxing325 2018-03-12 09:07 采纳率: 0%
浏览 1620
已结题

C#可不可以通过特性来设置函数的返回值

如果从元数据上看特性类只是在函数里被实例化了一下是做不到改变函数的返回值的。
但是我在java的一个框架里看到了他们的一个注解应该和c#的特性差不多。

那是一个缓存框架在方法的上面写一个注解(特性)表明此方法可以使用缓存然后这个注解
有一个构造函数参数应该是作为key在缓存数据中取值,我想问这里应该是改变了那个函数的
返回值了的(有缓存返回缓存数据无缓存走自己数据库查询) C# 特性可以实现么有没有什么
相关技术名字我可以自己去查阅

谢谢

  • 写回答

1条回答

  • threenewbee 2018-03-12 16:15
    关注

    不知道你具体想问什么,但是如果你的函数本身读取特性,然后将其中的值作为返回值,这个是可以的。

     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;
        }
    }
    

    https://www.ideone.com/8sbcwE

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)