У меня есть C# проект с включаемыми ссылочными типами :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
<!-- more stuff here -->
</Project>
Я установил пару предупреждений, чтобы они стали ошибками в моем .editorconfig:
[*.cs]
# CS8600: Converting null literal or possible null value to non-nullable type.
dotnet_diagnostic.CS8600.severity = error
# CS8603: Possible null reference return.
dotnet_diagnostic.CS8603.severity = error
В моем проекте у меня есть класс, и следующее не скомпилирует , что идеально:
public class NullableCompilerChecking
{
public string WontCompile(string? input)
=> input; // error: "possible null reference return"
}
Теперь о проблеме. Мой проект ссылается на другой проект под названием «Библиотека». Библиотека не имеет смысла В библиотеке у меня есть следующее:
public static class Strings
{
public static string Null => null;
}
Проблема в том, что когда я ссылаюсь на класс Strings из моей библиотеки, я теряю замечательную проверку на нуль. Например, следующие компоненты компилируются и генерируют во время выполнения:
[Test]
public void SomeTest()
{
var myString = Strings.Null;
var myIndex = myString.IndexOf("a");
}
Я хотел бы, чтобы библиотека string
по умолчанию приходила к знающему нулевой код как string?
, а не string
. Могу я это сделать?