gpt4 book ai didi

c# - 我可以阻止从字符串自动转换为 XName 吗?

转载 作者:太空狗 更新时间:2023-10-29 21:56:55 27 4
gpt4 key购买 nike

作为一个纯粹主义者,我讨厌看到字符串常量散布在我的代码中:

var x = element.Attribute("Key");

我喜欢将它们存储为单个引用常量,我喜欢我在 Eric White 的 XmlPowerTools 中首次看到的方法:

public class MyNamespace {
public static readonly XNamespace Namespace = "http://tempuri.org/schema";
public static readonly XName Key = Namespace + "Key";
}

并使用:

var x = element.Attribute(MyNamespace.Key);

这样做的美妙之处在于,我可以使用 Visual Studio 或 Resharper 轻松找到对这些 static 字段的所有引用,而不必遍历每个找到的字符串“Key”实例,这可以imagine 被用在很多不相关的地方。

因此,我有一个遗留项目,我想将其转换为使用 XName 方法,并且需要找到所有使用字符串而不是 XName 的地方>。我想如果我可以停止将字符串自动转换为 XName,编译器就会为我挑选所有这些事件。

我在查找中使用了正则表达式:

(Element|Attribute|Ancestor)s?\("

它拾取了那些结构,但后来我发现:

if (element.Name == "key")

想知道我还会错过什么。

问题是,我如何停止将字符串自动转换为 XName,或者还有什么其他方法可以找到所有出现的应该是 XName 的字符串?

最佳答案

无法停止 隐式运算符。

另一方面,取自MSDN :

XName does not contain any public constructors. Instead, this class provides an implicit conversion from String that allows you to create an XName

或者,您可以转换此代码:

if (element.Name == "key")

...进入:

   XName key = "key";

if(element.Name == key)

顺便说一句,我觉得你会让事情变得过于复杂只是为了获得更多的可搜索性,而编码编程语言的目标是生成可执行代码并且你应该尽可能简单地编写代码以提高可维护性和质量...

关于c# - 我可以阻止从字符串自动转换为 XName 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35493289/

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