`
wangdeshui
  • 浏览: 255678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C#拾遗系列(7):自定义属性

阅读更多

1 .描述

属性提供功能强大的方法以将声明信息与 C# 代码(类型、方法、属性等)相关联。属性与程序实体关联后,即可在运行时使用名为“反射”的技术查询属性。

属性以两种形式出现:

  • 一种是在公共语言运行库 (CLR) 中定义的属性。

  • 另一种是可以创建的用于向代码中添加附加信息的自定义属性。此信息可在以后以编程方式检索。

2. 示例代码:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace NetTest

{

    public class TestAttribute

    {

        public void Test()

        {           

            PrintAuthorInfo(typeof(CustomAttribute));       

        }

 

        /*

        Obsolete 属性将某个程序实体标记为一个建议不再使用的实体。每次使用被标记为已过时的实体时,

        随后将生成警告或错误,这取决于属性是如何配置的,第二个参数是true时,编译时显示错误

        */

        [Obsolete("please use aonther method,this is obsolate",true)]

        public void TestObsolate()

        {

            Console.Out.WriteLine("welcome");

 

        }

 

        private static void PrintAuthorInfo(System.Type t)

        {

            System.Console.WriteLine("Author information for {0}", t);

            System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t);  // reflection

 

            foreach (System.Attribute attr in attrs)

            {

                if (attr is Author)

                {

                    Author a = (Author)attr;

                    System.Console.WriteLine("   {0}, version {1:f}", a.Name, a.version);

                }

            }

        }

 

        //应用自定义属性

        [Author("Jack",version=1.0)]

        [Author("TJ",version=2.0)]

        class CustomAttribute

        {

            public void Test()

            {

 

                Console.Out.WriteLine("Test custom attribute");

            }       

        }

 

        //自定义的属性,集成属性类

        [System.AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct,AllowMultiple=true)]

        class Author : System.Attribute

        {

            private string name;

            public double version;

 

            public Author(string name)

            {

                this.name = name;

                version = 1.0;

            }

 

            public string Name

            {

 

                get { return this.name; }

            }

 

        }

    }

 

}

分享到:
评论

相关推荐

    CATIA二次开发:C#方式获取产品属性:一般属性及自定义属性

    这些属性信息通常分为一般属性和自定义属性。 一般属性指的是产品模型自带的属性,比如零部件的名称、描述、产品编号、修订号、定义和分类等。这些属性直接与模型相关联,可以通过Product对象的接口来获取和设置。 ...

    一个关于C# PropertyGrid增加自定义属性的范例。

    在C#编程中,`PropertyGrid`控件是一个强大的工具,用于显示和编辑对象的属性。它通常用于创建用户友好的界面,使开发者能够轻松地查看和修改对象的属性值。这个范例将向我们展示如何扩展`PropertyGrid`的功能,以...

    C# 自定义属性编辑器(UITypeEditor )

    本篇将深入探讨如何利用C#实现自定义属性编辑器,并结合UserControl和Component两种方式来实现属性编辑。 首先,理解UITypeEditor的工作原理是至关重要的。UITypeEditor是一个接口,位于System.Drawing.Design命名...

    C# winform上位机,Plc连接,显示线体状态:自定义控件,阀门,管道,风扇,按钮,齿轮泵,容器报警画面当前激活的报警

    显示线体状态:自定义控件,阀门,管道,风扇,按钮,齿轮泵,容器 可以手动操作:跟plc通信完成后实现。 Plc连接 连接目标plc并且读写数据;使用三方通信库。 报警画面 当前激活的报警显示 初始化datagridview;...

    C# 自定义属性在propertyGrid控件中显示 演示demo

    首先,自定义属性是C#中一个强大的特性,允许我们在类中添加元数据,这些元数据可以用来提供额外的信息,如描述、默认值或验证规则。我们通过继承`Attribute`类来创建自定义属性。例如,我们可以创建一个名为`...

    propertyGrid动态加载自定义属性

    本篇将深入探讨如何在C#中使用`PropertyGrid`动态加载自定义属性,以实现更灵活的数据展示和编辑功能。 首先,我们要理解`PropertyGrid`的基本用法。`PropertyGrid`控件通过反射机制自动发现并显示对象的所有公共...

    C#的自定义组件和自定义控件

    在C#中,创建自定义组件和控件通常涉及继承自已有的UI类,如`System.Windows.Forms.UserControl`或`System.Windows.Forms.Control`,然后添加自己的属性、方法和事件。开发者可以通过重写OnPaint方法来实现自定义的...

    C#自定义控件库

    "C#自定义控件库"是指使用C#语言编写的、由开发者自定义的控件集合,这些控件可以扩展.NET Framework的标准控件集,为用户提供更丰富的界面元素和功能。自定义控件是软件开发中的一个重要环节,特别是在UI设计和用户...

    WPF:自定义Metro样式文件夹选择对话框FolderBrowserDialog

    在压缩包文件`MetroFolderBrowserDialog`中,可能包含了实现这个自定义对话框的所有资源,如XAML布局文件、后台代码文件(C#或VB.NET)、样式文件(XAML)等。开发者可以通过查看和学习这些文件来理解整个实现过程,...

    c#自定义漂亮按钮

    在C#编程中,自定义用户控件是提高应用程序界面美观性和功能多样性的重要手段。本教程将基于给定的"C#自定义漂亮按钮"主题,深入讲解如何利用C#和Visual Studio 2010创建一个自定义的按钮控件。我们将主要探讨以下几...

    C# 自定义控件的属性和添加事件

    在C#编程中,自定义控件是一种强大的工具,它允许开发者根据特定需求扩展或定制标准控件的功能。本文将深入探讨如何创建自定义控件、添加属性以及为它们添加事件,以提升软件界面的交互性和用户体验。 首先,我们要...

    C#2017实现自定义属性实现标签特性简单例子可执行

    在C#编程中,自定义属性(Custom Attributes)是一种元数据,可以附加到代码的不同元素(如类、方法、字段等)上,用于提供额外的信息。这些信息可以在运行时通过反射来访问,使得代码更加灵活且易于扩展。本篇文章...

    C#自定义控件.rar

    7. **打包与使用**:完成自定义控件后,可以将其封装到一个自定义用户控件库(User Control Library)或自定义组件库(Component Library),然后在其他项目中引用这个库,从而方便地在多个项目中复用。 在压缩包...

    C#自定义控件之-自定义MessageBox

    本主题将深入探讨如何在C#中自定义一个类似于系统默认`MessageBox`的控件。 `MessageBox`是.NET Framework提供的一种标准对话框,它用于向用户显示信息、询问问题或确认操作。然而,系统默认的`MessageBox`功能有限...

    C#自定义窗体--自定义窗体

    通过上述分析,我们了解到在C#中创建自定义窗体不仅涉及基础属性的设置,还包括高级图形和事件处理技术的应用。这种灵活性使得C#成为构建高度定制化用户界面的理想选择,能够满足各种复杂的应用场景需求。

    C# 自定义控件 自定义ComboBox

    自定义控件是C#编程中一个重要的概念,它允许开发者根据需求扩展或修改内置控件的功能和外观,以满足特定项目的需求。在本案例中,我们将深入探讨如何自定义ComboBox控件。 ComboBox控件是Windows Forms中一个非常...

    C# ListView中添加多种自定义控件源码

    本主题将深入探讨如何在C#的ListView中添加和使用各种自定义控件,如CheckBox和ComboBox,以增强用户体验和功能。 一、ListView控件基础 ListView控件允许我们展示数据列表,并提供了多种视图模式,如小图标、大...

    SolidWorks一键清空自定义属性

    【SolidWorks一键清空自定义属性】 代码在SolidWorks2020版本下编制,在其他版本中使用自行引用运行库(方法:打开SolidWorks→工具→宏→编辑→打开“删除属性.swp”→工具→引用→把丢失项取消勾选,勾选你当前...

    C# 自定义控件 自定义Button控件 水晶按钮

    在.NET Framework中,C#提供了一个强大的平台来创建自定义控件,这使得开发者可以根据自己的需求定制用户界面。本主题将深入探讨如何在C#中自定义一个“水晶按钮”控件,它不仅具备基本Button的功能,还可以通过...

    C#重写SplitContainer收缩自定义控件

    C#重写SplitContainer收缩自定义控件

Global site tag (gtag.js) - Google Analytics