C#8可为空和不可为空的引用类型-仅当输入为可为空时才可为可输出

哈米德·马耶利(Hamid Mayeli)

我有一堆扩展方法,可以将我的实体转换DTOs为如下形式。

public static LocationDto? ToDto(this Location? @this)
{
    if (@this == null) return null;

    return new LocationDto
            {
                Id = @this.Id,
                Text = @this.Name,
                ParentId = @this?.Parent?.Id,
            };
}

这里的问题是,如果传递不为null的实体,仍然会收到可为null的实体,并且无法定义a,public static LocationDto ToDto(this Location @this)因为它们将被编译为相同的方法。
另外,我不喜欢!在打电话时使用它。所以以下不是我的答案。

Location entity = AMethod();
LocationDto dto = entity.ToDto()!;

是否有属性或语法告诉编译器此方法的行为?有点像:

public static [NullableOnlyIfInputIsNull] LocationDto? ToDto(this Location? @this)
基督徒举行

您要求的属性是NotNullIfNotNullAttribute

该属性接受用于推断无效性的参数的名称。

您的情况如下所示:

using System.Diagnostics.CodeAnalysis;

// ...

[return:NotNullIfNotNull("this")]
public static LocationDto? ToDto(this Location? @this)
{
    // Your code here
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#8可为空和不可为空的引用类型-仅当输入为可为空时才可为可输出

来自分类Dev

C#8不可为空的引用和隐式用法

来自分类Dev

将C#8可为空的引用类型标记为“这不能为空”

来自分类Dev

C#8中的不可为空的引用类型在运行时可以为null吗?

来自分类Dev

当在c#8中使用子类约束时,如何指定泛型引用类型为可为空?

来自分类Dev

有关C#8可为空的引用类型的信息是否存储在.NET程序集中?

来自分类Dev

具有C#8可为空的引用类型的TryGetValue模式

来自分类Dev

可为空的通用引用类型

来自分类Dev

从可为空的类型中提取不可为空的类型定义

来自分类Dev

使用泛型的C#8可为空的引用类型处理中的行为不一致

来自分类Dev

在C#8中,为什么对新表达式进行类型推断会导致可为空的引用?

来自分类Dev

C#8.0不可为空的引用类型和选项模式

来自分类Dev

C#9.0记录-不可为空的引用类型和构造函数

来自分类Dev

不可为空的引用类型:为什么编译器认为我的对象可为空?

来自分类Dev

如何允许C#8中的可为空的泛型类型作为方法的返回类型?

来自分类Dev

检查类型是否匹配可为空和不可为空的版本

来自分类Dev

推断类型为可为空的集合,但预期为不可为空的集合

来自分类Dev

不可为空的属性为null

来自分类Dev

不可为空的属性为null

来自分类Dev

将数组从可为空的类型转换为相同类型的不可为空的类型?

来自分类Dev

哪些Unity类型可为空?

来自分类Dev

PHP可为空的类型声明

来自分类Dev

将可为空的类型转换为其不可为空的类型?

来自分类Dev

C#和可为空的标志/注释?

来自分类Dev

LINQ和可为空的参数

来自分类Dev

具有可为空和不可为空的泛型数组的方法调用

来自分类Dev

具有不可为空的 getter 的可空字段

来自分类Dev

可为空的引用类型和“ [CS8603]可能为空的引用返回”。

来自分类Dev

非可空列的UNION可为空

Related 相关文章

  1. 1

    C#8可为空和不可为空的引用类型-仅当输入为可为空时才可为可输出

  2. 2

    C#8不可为空的引用和隐式用法

  3. 3

    将C#8可为空的引用类型标记为“这不能为空”

  4. 4

    C#8中的不可为空的引用类型在运行时可以为null吗?

  5. 5

    当在c#8中使用子类约束时,如何指定泛型引用类型为可为空?

  6. 6

    有关C#8可为空的引用类型的信息是否存储在.NET程序集中?

  7. 7

    具有C#8可为空的引用类型的TryGetValue模式

  8. 8

    可为空的通用引用类型

  9. 9

    从可为空的类型中提取不可为空的类型定义

  10. 10

    使用泛型的C#8可为空的引用类型处理中的行为不一致

  11. 11

    在C#8中,为什么对新表达式进行类型推断会导致可为空的引用?

  12. 12

    C#8.0不可为空的引用类型和选项模式

  13. 13

    C#9.0记录-不可为空的引用类型和构造函数

  14. 14

    不可为空的引用类型:为什么编译器认为我的对象可为空?

  15. 15

    如何允许C#8中的可为空的泛型类型作为方法的返回类型?

  16. 16

    检查类型是否匹配可为空和不可为空的版本

  17. 17

    推断类型为可为空的集合,但预期为不可为空的集合

  18. 18

    不可为空的属性为null

  19. 19

    不可为空的属性为null

  20. 20

    将数组从可为空的类型转换为相同类型的不可为空的类型?

  21. 21

    哪些Unity类型可为空?

  22. 22

    PHP可为空的类型声明

  23. 23

    将可为空的类型转换为其不可为空的类型?

  24. 24

    C#和可为空的标志/注释?

  25. 25

    LINQ和可为空的参数

  26. 26

    具有可为空和不可为空的泛型数组的方法调用

  27. 27

    具有不可为空的 getter 的可空字段

  28. 28

    可为空的引用类型和“ [CS8603]可能为空的引用返回”。

  29. 29

    非可空列的UNION可为空

热门标签

归档