мы знаем:
int? number = 10;
Console.WriteLine(number is int); // true
а
NotNull<string> text = "10"; // NotNull<> is my struct
Console.WriteLine(text is string); // false
Я хочу, чтобы text is string
возвращал true, как я могу это сделать?
-------------------------------- edit
вот мой NotNull:
public class NotNull<T> where T : class
{
public T Value { get; }
private NotNull(T value)
{
this.Value = value;
}
public static implicit operator T(NotNull<T> source)
{
return source.Value;
}
public static implicit explicit NotNull<T>(T value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
return new NotNull<T>(value);
}
}
если класс объявлял:
public class A
{
public NotNull<string> B { get; set; }
}
Я просто надеюсь, что любой сериализатор может сериализовать и десериализовать его так же, как:
public class A
{
public string B { get; set; }
}
-------------------------------- edit 2
Я понял, что это нерешенный вопрос:
- Если
NotNull<>
является классом,default(NotNull<>)
имеет значение null, я ничего не делаю. - if
NotNull<>
is struct,default(NotNull<>).Value
имеет значение null.
извините за вопрос.