c#之--特性的简单使用

特性

一…特性的使用场景:
框架中,类上面,方法上面,属性上面字段上面,程序集上面,参数上面
二.特性的本质:
一个继承自Attribute类的类。
三.特性的简单的定义,使用以及查找:
定义:

   [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
    public class TestAttribute : Attribute
    {
        public string TargetVal;
        public TestAttribute(string targetVal)
        {
            TargetVal = targetVal;
        }
    }

查找:通过反射

   public string GetCustomerAttr<T>(T model) where T : class
        {
            Type type = typeof(T);
            if (type.IsDefined(typeof(TestAttribute), true))
            {
                var attrs = type.GetCustomAttributes(typeof(TestAttribute), true);
                return ((TestAttribute)attrs[0]).TargetVal;
            }
            else
            {
                return type.Name;
            }
        }

简单的应用:
先定义一个抽象的特性用于我们的后面的实现验证功能使用

 public abstract class CommonAttribute:Attribute
    {
        public abstract bool isValidatePaas(Object DataVal);
    }

再写一个具体的验证类进行实现抽象方法

  public class StrinfgLengthAttribute : CommonAttribute
    {
        public int maxVal;
        public int minVal;
        public StrinfgLengthAttribute(int max, int min)
        {
            maxVal = max;
            minVal = min;
        }
        public override bool isValidatePaas(object DataVal)
        {
            return DataVal.ToString().Length < maxVal && DataVal.ToString().Length < minVal;
        }
    }

再写一个方法进行其他的验证方法的实现:

public class EmailAttribute : CommonAttribute
    {
        public override bool isValidatePaas(object DataVal)
        {
            Regex regex = new Regex( @"/\w[-\w.+] *@([A - Za - z0 - 9][-A - Za - z0 - 9] +\.) +[A - Za - z]{ 2,14}/");
            return regex.IsMatch(DataVal.ToString());
        }
    }

再写一个通用的调用特性方法:

  public class CustomerAttr
    {
        public static bool Volidate<T>(T model)
        {
            PropertyInfo[] pros = model.GetType().GetProperties();
            foreach (var pro in pros)
            {
                if (pro.IsDefined(typeof(CommonAttribute), true))
                {
                    var attrs = pro.GetCustomAttributes(typeof(CommonAttribute), true);
                    foreach (var item in attrs)
                    {
                        CommonAttribute commonAttribute = item as CommonAttribute;
                        if (!commonAttribute.isValidatePaas(pro.GetValue(model)))
                        {
                            return false;
                        }
                    }
                }
            }
            return true;
        }
    }

在写一个实体类使用特性:

  public class Student
    {
        [StrinfgLength(50,6)]
        public string name;
        [Email]
        public string Email;
    }

这样在我们进行实体的创建的时候只需要调用这个方法进行验证将实体传进去即可。
这样我们就简单的实现了一个特性的基本使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C是计算机科学中的一种编程语言,由美国贝尔实验室的丹尼斯·里奇于1972年至1973年之间开发。C语言被广泛应用于开发操作系统、编译器、嵌入式系统等领域。 C语言是一种高级编程语言,其语法简洁、代码可读性强,因此被广泛使用。C语言在设计上注重效率和可移植性,可以跨平台运行,这使得其成为了编程入门的首选语言。 C语言的基本语法包括数据类型、操作符、流程控制语句等。它支持面向过程的编程,提供了丰富的库函数和底层控制的能力,可以直接访问内存和硬件。 C语言在编程中具有很高的灵活性,可以用于实现各种算法和数据结构。它也是学习其他编程语言的基础,因为许多编程语言的语法和特性都借鉴了C语言。 与其他编程语言相比,C语言的执行效率高,运行速度快。这得益于C语言的底层控制能力和对硬件的直接访问。 总的来说,C语言是一种强大且广泛应用的编程语言。不仅适用于专业程序员,也适合初学者学习编程的基础知识。 ### 回答2: 对于一个中文回答中只有一个字母"c"的问题,可能需要进一步解释问题具体是什么。"c"是电子计算机语言中的一种编程语言,也是一种很常见的编程语言。C语言是由贝尔实验室的Dennis Ritchie在20世纪70年代开发的。它是一种结构化的、高级的编程语言,适合用于开发系统软件和应用软件。 C语言具有简洁、高效、可移植性强等特点,因此在计算机科学及软件工程领域广泛应用。C语言可以用于编写各种类型的程序,包括操作系统、编译器、数据库、图形界面等等。许多其他的编程语言都是基于C语言或者受到C语言的影响。 C语言的语法相对简单,易于学习和上手,但也具有一些需要注意的细节和规范。C语言不提供一些高级抽象特性,如面向对象编程,但它提供了强大的底层和访问硬件的能力。 总之,C语言作为一种编程语言,具有广泛的应用领域,是学习计算机编程的基础之一。无论是从事软件开发、计算机科学研究还是计算机工程方面的工作,掌握C语言都会非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值