Eu criei um componente funcional baseado no UserControl do WinForms. Substituí algumas propriedades existentes que geram o aviso CS8765.
CS8765: Nullability of type of parameter 'value' doesn't match overridden member (possibly because of nullability attributes).
Este código coloca o aviso em “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();
}
}
Se eu alterar o tipo da propriedade de “Font” para “Font?” o aviso para “set” desaparece, mas recebo um aviso diferente em “get”.
CS8764: Nullability of return type doesn't match overridden member (possibly because of nullability attributes).
Isso faz sentido para mim porque a declaração original que estou substituindo usa a versão não anulável de Font.
Sem ignorar isso, como corrijo meu aviso original?
Font
aparentemente tem oAllowNull
atributo, permitindo chamar seu setter com null. Veja a fonte aqui .Efetivamente, o parâmetro do setter torna-se anulável, mas o getter retorna um valor não nulo. É por isso que nenhum deles
Font
correspondeFont?
à nulidade. Você também precisa adicionar o[AllowNull]
atributo à sua substituição.