举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > 命名和位置属性参数 C# 属性

命名和位置属性参数 C# 属性

2023-02-27 01:18 C#教程

命名和位置属性参数 C# 属性

C# 属性

属性可以向代码元素添加自定义信息。

例如,我们可以使用属性标记一个类已被弃用。

我们还可以标记一个接口是一个web服务的web接口。

属性类

属性由继承自抽象类System.Attribute的类定义。

要将属性附加到代码元素,请在代码元素前面的方括号中指定属性的类型名称。

例如,以下代码将 ObsoleteAttribute 附加到Main类:

[ObsoleteAttribute]
public class Main {
   ...
}

此属性由编译器识别,并且如果引用了标记为过时的类型或成员,将导致编译器警告。

按照惯例,所有属性类型都以 Attribute 结束。

C#允许您在附加属性时省略后缀:

[Obsolete]
public class Main {
   ...
}

ObsoleteAttribute 是在 System 命名空间中声明的类型,如下所示:

public sealed class ObsoleteAttribute : Attribute {...}

C#语言和.NET framework包括多个预定义属性。

命名和位置属性参数

属性可以具有参数。

在下面的示例中,我们将 XmlElementAttribute 应用于类。

此属性告诉XMLserializer对象在XML中的表示方式并接受几个属性参数。

以下属性将CustomerEntity类映射到XML元素名为Customer,属于http://www..cn命名空间:

[XmlElement ("Customer", Namespace="http://www..cn")]
public class Customer { 
   ... 
}

属性参数属于两种类型之一:位置或命名。

在里面前面的例子中,第一个参数是位置参数; 第二个是命名参数。

位置参数对应于属性的参数类型的公共构造函数。

命名参数对应于公共字段或公共属性的属性类型。

当指定属性时,我们必须包括对应的位置参数到一个属性的构造函数。

命名参数是可选的。



属性目标

下面是使用 CLSCompliant 属性指定CLS合规性的示例对于整个装配:

[assembly:CLSCompliant(true)]

指定多个属性

可以为单个代码元素指定多个属性。

每个属性都可以列在同一对方括号内,用逗号分隔单独的方括号对。

以下三个示例在语义上是相同的:

[Serializable, Obsolete, CLSCompliant(false)]
public class Main {...}

[Serializable] [Obsolete] [CLSCompliant(false)]
public class Main {...}

[Serializable, Obsolete]
[CLSCompliant(false)]
public class Main {...}

来电信息属性

我们可以用三个调用者信息之一来标记可选参数属性。 它们告诉编译器馈送从调用者获得的信息源代码插入参数“s默认值:

  • [CallerMemberName] applies the caller"s member name

  • [CallerFilePath] applies the path to caller"s source code file

  • [CallerLineNumber] applies the line number in caller"s source code file

以下程序中的OneMethod方法演示了所有三个:

using System;
using System.Runtime.CompilerServices;

class Main {
    static void Main(){
        oneMethod();
    }
    static void OneMethod (
        [CallerMemberName] string memberName = null,
        [CallerFilePath] string filePath = null,
        [CallerLineNumber] int lineNumber = 0){
        
            Console.WriteLine (memberName);
            Console.WriteLine (filePath);
            Console.WriteLine (lineNumber);
    }
}

假设我们的程序驻留在c: source  test  Program.cs中,输出将是:

Main
c:sourcetestProgram.cs
11
阅读全文
以上是编程学为你收集整理的命名和位置属性参数 C# 属性全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部