gpt4 book ai didi

.net - 如何将 GUID 作为属性参数?

转载 作者:行者123 更新时间:2023-12-04 10:59:35 26 4
gpt4 key购买 nike

我需要一些属性类中的 Guid 属性,如下所示:

public class SomeAttribute : Attribute {
private Guid foreignIdentificator;
public Guid ForeignIdentificator {
get { return this.foreignIdentificator; }
set { this.foreignIdentificator = value; }
}
}

但是在属性定义中,我只能使用原始类型,它们是常量(我理解为什么,这让我很有意义)。解决方法可以将“ForeignIdentificator”定义为字符串,并在运行时创建 Guid:
public class SomeAttribute : Attribute {
private string foreignIdentificator;
public string ForeignIdentificator {
get { return this.foreignIdentificator; }
set { this.foreignIdentificator = value; }
}
public Guid ForeignIdentificatorGuid {
get { return new Guid( ForeignIdentificator ); }
}
}

Unahppily 我放松检查类型安全。 “ForeignIdentificator”属性可以包含任何字符串值,并且在创建 Guid 期间将在运行时抛出异常,而不是在编译时。

我知道编译器会检查“System.Runtime.InteropServices.GuidAttribute”的字符串值是否为“Guid 兼容性”。这个检查正是我需要的,但我不知道这个检查是我在编译器中硬编码还是我可以明确定义(以及如何)。

您是否知道某种方式,如何确保“Guid 兼容性”检查属性?或者其他方式,如何在属性中达到类型安全的 Guid 定义?
谢谢。

最佳答案

我过去遇到过你的确切问题。我们只是要求他们将 GUID 作为字符串传递...这是 VS GUID 生成器工具提供给我们的默认方式 (*F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4)。我们基本上做了你所做的。我们在插件架构中使用它,因此我们的客户一直是使用该接口(interface)的人。如果你看看微软在他们需要做同样的事情时做了什么,他们就会这样做。

这样做没有问题。不止一次,我们是否将其视为该领域的问题。

不过,您可能希望将该字符串字段命名为 GUID,以免混淆您的消费者。添加一些文档以防他们不知道它需要采用什么格式。

当我看到这个时,我有同样的 react ......但后来我继续前进,因为似乎没有类型安全的解决方案。

关于.net - 如何将 GUID 作为属性参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/325756/

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