我可以使用 Roslyn 抑制自定义编译器错误吗?

问题描述 投票:0回答:1

我使用的平台大量使用反射和代码生成来初始化某些特殊类型的成员。看起来像这样:

public class MyGraph : PXGraph<MyGraph>
{
    public PXSelect<DBTable> view;
}

我想在我的代码中添加可空引用类型分析。但是,我找不到一个优雅的解决方案来避免有关非空字段未初始化的多个警告。 它们显示在字段或类型构造函数上。平台初始化它们

我知道我可以抑制可空分析中的警告。但是,我不喜欢它的外观。我不喜欢编译指示,因为它们使代码变得混乱,而且我更不喜欢抑制属性。

我不喜欢以下声明,因为它对我来说看起来毫无意义:

public class MyGraph : PXGraph<MyGraph>
{
    public PXSelect<DBTable> view = null!; // or = default!
}

我也尝试了可空属性,但没有多大好处。

我尝试使用

required
关键字,如下所示:

public class MyGraph : PXGraph<MyGraph>
{
    public required PXSelect<DBTable> view;
}

我最喜欢这个声明,但我收到有关未初始化字段的编译器错误。

有没有办法以更复杂的方式抑制编译器警告?我可以使用 Roslyn 以某种方式影响编译器诊断吗?

c# roslyn suppress-warnings
1个回答
0
投票

你提到罗斯林;如果您很乐意编写自己的分析器来识别允许的场景,那么:您正在寻找的是

DiagnosticSuopressor

请注意,只能抑制警告(而非错误)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.