C#给已有类型添加隐式转换有没有办法在C#中给其他程序集中已有类型添加隐式转换?例如,如果我使用两个不同的程序集,每个程序集都提供自己的Vector3struct,并在它们的API中使用它,那么能够定义一次转换然后将Foo.Vector3传递给方法就可以了。需要一个Bar.Vector3,并自动转换它。如果我有库的源代码,那么我可以添加隐式转换运算符。没有这个来源,我现在每次都使用辅助函数来显式地进行转换。我希望有更好的方法。我意识到我可以使用隐式转换运算符创建我自己的Vector3结构和其他两个结构,但这并不能解决我想直接将(外部定义的)类型的对象传递给期望它的方法的所有情况。其他。奖励问题:库的作者在他们的API中公开Vector3结构之类的东西是否应该做些什么来促进这方面的易用性?对于任何你自己写的类型,你都可以提供对第三方类型的隐式转换,但是你不能添加对两个第三方类型之间隐式转换的支持。您可以通过向它们添加扩展方法来稍微提高两种Vector3类型之间转换的优雅性;publicstaticBar.Vector3ToBarVector3(thisFoo.Vector3foo){return/*Bar.Vector3的实例*/}publicstaticFoo.Vector3ToFooVector3(thisBar.Vector3bar){return/*Foo.Vector3的实例*/}这是您所能期望的最好结果。不幸的是,您不能将隐式转换添加到您无法更改的类型。我会推荐你??提到的解决方法,但你已经提到了:)。我担心你的奖金问题的答案是“你不能”。以上就是C#学习教程:C#对现有类型共享的所有内容都添加了隐式转换。如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络收集,不代表侵权,请点击右边联系管理员删除。如需转载请注明出处:
