Обнуляемость универсального типа во время выполнения (.NET 7.0)C#

Место общения программистов C#
Ответить
Anonymous
 Обнуляемость универсального типа во время выполнения (.NET 7.0)

Сообщение Anonymous »

Как определить во время выполнения, является ли общий параметр нулевым или нет? Я надеялся, что класс NullabilityInfoContext решит проблему, но это тоже не сработало.
Есть ли решение этой проблемы?
using System.Reflection;
namespace ConsoleApp;

public class Item
{
public required T Value { get; init; }

public bool IsNullable()
{
var nullabilityInfoContext = new NullabilityInfoContext();
var propertyInfo = this.GetType().GetProperty(nameof(Value));
var nullabilityInfo = nullabilityInfoContext.Create(propertyInfo);
return nullabilityInfo.ReadState == NullabilityState.Nullable;
}
}

internal class Program
{
static void Main()
{
var nullable = new Item() { Value = null };
var notnull = new Item() { Value = "" };
Console.WriteLine($"nullable is nullable: {nullable.IsNullable()}");
Console.WriteLine($"notnull is nullable: {notnull.IsNullable()}");
// Output:
// nullable is nullable: True
// notnull is nullable: True
}
}


Подробнее здесь: https://stackoverflow.com/questions/763 ... me-net-7-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»