我基于WinForm的userControl创建了一个工作组件.我已经覆盖了生成警告CS 8765的几个现有属性.

CS8765: Nullability of type of parameter 'value' doesn't match overridden member (possibly because of nullability attributes).

此代码将警告放在"set"上.

    /// <summary>
    /// Gets or sets the font of the text
    /// </summary>
    [Browsable(true)]
    public override Font Font
    {
        get => base.Font;
        set
        {
            base.Font = value;
            AdjustSize();
        }
    }

如果我将属性的类型从"Font"更改为"Font?""set"的警告会消失,但我在"get"上得到了不同的警告.

CS8764: Nullability of return type doesn't match overridden member (possibly because of nullability attributes).

这对我来说是有意义的,因为我正在重写的原始声明使用了Font的不可空版本.

在不忽略它的情况下,如何修复我原来的警告?

推荐答案

Font显然具有AllowNull属性,允许您用空调用其setter.参见来源here.

实际上,setter的参数变得可为空,但getter返回非空值.这就是为什么FontFont?都无法匹配空性.您还需要将[AllowNull]属性添加到您的覆盖中.

[AllowNull]
public override Font Font
{
    get => base.Font;
    set
    {
        base.Font = value;
        AdjustSize();
    }
}

Csharp相关问答推荐

在Microsoft XNA框架(MonoGame)中旋转相机

使用其可能实现的基类和接口的属性的方法

EF Core Fluent API中定义的多对多关系

Elasticsearch:当我try 使用c#将嵌套对象添加到filter中时出现问题

==和Tuple对象的相等<>

如果属性名为xyz,我需要使用System.Text.Json修改字符串类型的值""<>

从Blob存储中提取tar.gz文件并将提取结果上载到另一个Blob存储

System.Net.Http.HttpClient.SendAsync(request)在docker容器内的POST方法30秒后停止

如果设置了另一个属性,则Newtonsoft JSON忽略属性

如何将字符串变量传递给JObject C#-无法加载文件或程序集';System.Text.Json

使用Entity Framework6在对象中填充列表会导致列表大多为空

C#自定义验证属性未触发IsValid方法

源代码生成器项目使用`dotnet build`编译,而不是在Visual Studio中编译?

使用switch 类型模式时出现奇怪的编译器行为

在.NET Maui中,Flyoutindow/Hamburger菜单可以在shell 之外实现吗?

Xamarin.Forms项目中缺少MainPage.xaml

如何保存具有多个重叠图片框的图片框?

用于分钟和秒验证的MudTextfield的正则表达式掩码

将文本从剪贴板粘贴到RichTextBox时,新文本不会在RichTextBox ForeColor中着色

身份验证中间件如何处理多个方案