gpt4 book ai didi

c# - ParameterInfo.ParameterType 是 "SqlBytes&",如何与 typeof() 比较

转载 作者:行者123 更新时间:2023-12-02 19:35:31 25 4
gpt4 key购买 nike

我正在编写一个自动化 SQLCLR 部署工具,并使用反射来发现必须声明的过程和函数。因此,我使用这样的代码来构建部署汇编方法所需的 T-SQL:

...
if (p.ParameterType == typeof(string))
{
sql = "nvarchar(4000)";
}
...

但此方法包含一个在 C# 中声明为 out SqlBytes bytes 的参数,并且 ParameterType 为 SqlBytes&。我无法使用 typeof(SqlBytes&) 进行比较,因为语法无效。所以我有点困惑 SqlBytes& 类型到底是什么,以及是否有办法为其生成 typeof 。我知道我可以诉诸类型名称(即字符串)比较,这不是我的问题,我更好奇带有 & 的类型是什么,看起来像 C++ 引用类型,但我认为在使用 .Net 十多年的时间里我从未注意到它们。

enter image description here

最佳答案

SqlBytes&out SqlBytes 完全相同(碰巧还有 ref SqlBytes)。基本上,outref 的实现是相同的,即作为引用、通过引用。如果您正在使用反射并且当前有一个 Type 实例,则可以通过使用以下方式获取引用版本:

Type type = ...
Type byRefType = type.MakeByRefType();

相当令人困惑的是,回到非引用版本:

Type origType = byRefType.GetElementType();

(坦白说,我怀疑他们可能只是将其侵入到现有方法中)

关于c# - ParameterInfo.ParameterType 是 "SqlBytes&",如何与 typeof() 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376323/

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