我需要将值传递给一个方法,以及每个值是指定还是未指定的指示,因为null本身就是一个有效值,因此不能解释为“未指定”。
我采用了通用方法并为这些值创建了一个简单的容器(见下文),但这是正确的方法吗?有没有更好的方法来解决这个问题 - 例如,框架中是否已经存在这样的类?
public struct Omissible<T>
{
public readonly T Value;
public readonly bool IsSpecified;
public static readonly Omissible<T> Unspecified;
public Omissible(T value)
{
this.Value = value;
this.IsSpecified = true;
}
}
方法签名可能如下所示,允许调用者指示某些值不应更新(未指定),其他值应设置为 null/另一个值(指定)。
public void BulkUpdate(int[] itemIds,
Omissible<int?> value1, Omissible<string> value2) // etc.