c# - 在 c# SemanticModel 中,有没有办法从引用类型中分辨出可为空的值类型?
问题描述
我正在尝试对使用新的可为空语法的类编写自定义 c# 8 重构。
我通过检查“?”来区分“实际”类型和“可空”类型之间的区别。在类型名称的末尾。
问题是我如何知道哪些变量需要“.Value”来获取值,哪些变量不需要?
例如:
#nullable enable
public class C
{
public int actualInt {get; set;}
public int? nullableInt {get; set;}
public string actualString {get; set;}
public string? nullableString {get; set;}
}
一旦我有了语义模型,我就可以得到这样的符号信息:
IPropertySymbol symbolInfo = SemanticModel.GetDeclaredSymbol(property) as IPropertySymbol;
但是对于“actualInt”,我看到它有
symbolInfo.Type.Name == "Int32"(好)
IsReferenceType == true(嗯?)
IsValueType == false(嗯?)
我本来希望看到 IsValueType == true
解决方案
推荐阅读
- button - MS PowerApps 时间戳按钮
- julia - Julia - 错误:UndefVarError:未定义
- c# - 如何为使用 Line Renderer 绘制的线设置动画
- c++ - How do I use ceres::CubicInterpolator with data not on a uniform grid
- ruby - 在 Ruby 中检测 <,>, >=,<= 运算符并在 .where 方法中使用(无活动记录)
- c# - 如何检查,在 Get 方法中,特定数据在 restsharp 中是否匹配
- mongodb - 如何对列上的数据进行分组并在 MongoDB 上每小时汇总记录?
- python - Django保存文件不使用表单,只需使用ajax
- c# - 在 C# 中序列化 在 C# 中反序列化 BitConverter 和字节序保证
- python - Azure 自定义视觉图像分类预测 - (如何)将图像调整为正方形?