gpt4 book ai didi

.net - 在 dotnet 中使用注解

转载 作者:行者123 更新时间:2023-12-04 18:19:39 26 4
gpt4 key购买 nike

我从未使用过 C# 属性,但知道它们大致相当于 Java 注释。

如果我继续使用属性替换注释的端口,我需要知道什么?什么会是一样的?不同的?什么会咬我?

至于我的研究,我发现

C# uses the ConditionalAttribute attribute that is driven from compile time symbols



我只是想知道我们是否可以自己写注释和
哪些版本的 dotnet 支持它?

如果我有任何样本或文件要阅读,我们将不胜感激

等待您的宝贵回复和意见

最佳答案

是的,您可以编写自己的属性——您只需从 Attribute 继承即可。 , IE。

public class FooAttribute : Attribute {
public int Bar {get;set;}
}

然后你可以附上:
[Foo(Bar=12)]
public int X {get;set;}

(另见 AttributeUsageAttribute 如果你想限制它的应用范围——例如类、字段、接口(interface)等)

请注意,虽然某些属性( ConditionalAttributeObsoleteAttribute 等)对编译器有意义,但您 不能使用属性编写您自己的编译时功能,但通过 PostSharp 等 3rd 方工具除外。您可以做的是在运行时通过反射检查属性(特别是 Attribute.GetCustomAttribute[s] ),并根据代码做出相应 react 。大多数属性都是通过反射以这种方式使用的。
foreach(var prop in type.GetProperties()) {
var foo = (FooAttribute)Attribute.GetCustomAttribute(
prop, typeof(FooAttribute));
if(foo != null) {
Console.WriteLine("{0} has Foo.Bar: {1}", prop.Name, foo.Bar);
}
}

所有版本的 .NET 都支持属性,但在某些有限的框架中,您可能会发现某些 BCL 属性在不需要时会丢失。例如, DataContractAttribute在不支持 WCF 的平台上不存在 DataContractSerializer .

关于.net - 在 dotnet 中使用注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10926385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com