Я играл со структурами как с механизмом для неявной проверки сложных объектов значений, а также с универсальными структурами вокруг более сложных классов для обеспечения допустимых значений. Я немного не осведомлен о последствиях для производительности, поэтому надеюсь, что вы все сможете мне помочь. Например, если бы я сделал что-то вроде внедрения объекта домена в оболочку типа значения, это вызовет проблемы? Почему? Я понимаю разницу между типами значений и ссылочными типами, и моя цель здесь - использовать различное поведение типов значений. На что именно мне нужно обратить внимание, чтобы делать это ответственно?
Вот основная идея того, о чем я думал.
public struct NeverNull<T>
where T: class, new()
{
private NeverNull(T reference)
{
_reference = reference;
}
private T _reference;
public T Reference
{
get
{
if(_reference == null)
{
_reference = new T();
}
return _reference;
}
set
{
_reference = value;
}
}
public static implicit operator NeverNull<T>(T reference)
{
return new NeverNull<T>(reference);
}
public static implicit operator T(NeverNull<T> value)
{
return value.Reference;
}
}