c# - 在不编写包装器的情况下禁用 C# 中第三方类的隐式转换?

标签 c# type-conversion implicit-conversion

我使用的引擎具有 Vector3Vector2 类。

但是,意外地将Vector2传递给需要 Vector3的方法会经常出现问题。

目前它自动转换为 (x, y, 0) 的 Vector3。在遇到运行时问题后,我总是需要一些时间才能找到这些微不足道的原因......

是否可以以某种方式阻止这两个第三方类之间的隐式转换,以便我可以在编译时检测到这些问题?

目前我唯一的想法是编写包装器并用它们替换 Vector3 和 Vector2 的所有用法。

但是看起来很乏味。 还有其他办法吗?

最佳答案

您可以创建一个自定义代码分析器,并将其配置为在代码中发生这种隐式转换时引发编译时错误。

参见https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix获取教程。

如果您这样做,您还可以将该分析器放入 Nuget 包中,以便使用相同第三方库的其他人可以从您所做的工作中受益。

关于c# - 在不编写包装器的情况下禁用 C# 中第三方类的隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71240296/

相关文章:

c# - TreeNode 在 TreeView 未聚焦时选择了 BackColor

c# - Xamarin 形式 : tooltip in windows app

c# - 通过 Sql Server 数据库更改通知 winforms 应用程序

c# - 无法将类型 'X' 隐式转换为 'string' - 它何时以及如何决定它 "cannot"?

javascript - 统一码转二进制?

c++ - 为什么输出带有转换运算符的类不适用于 std::string?

typescript - 为什么在 TypeScript 中接口(interface)中可能的数字值可以转换为类实现中不可能的数字值?

c# - Html.RadioButton 将所有值设置为选定值

type-conversion - 将任何 RDF 序列化转换为 RDF/XML

Scala:除了空选项之外,将 None 用于其他目的