Optional
using System.Collections.Generic;
using System.Text.Json;
namespace Azure.Storage.Common
{
internal static class Optional
{
public static bool IsCollectionDefined<T>(IEnumerable<T> collection)
{
ChangeTrackingList<T> changeTrackingList = collection as ChangeTrackingList<T>;
if (changeTrackingList != null)
return !changeTrackingList.IsUndefined;
return true;
}
public static bool IsCollectionDefined<TKey, TValue>(IDictionary<TKey, TValue> collection)
{
ChangeTrackingDictionary<TKey, TValue> changeTrackingDictionary = collection as ChangeTrackingDictionary<TKey, TValue>;
if (changeTrackingDictionary != null)
return !changeTrackingDictionary.IsUndefined;
return true;
}
public static bool IsCollectionDefined<TKey, TValue>(IReadOnlyDictionary<TKey, TValue> collection)
{
ChangeTrackingDictionary<TKey, TValue> changeTrackingDictionary = collection as ChangeTrackingDictionary<TKey, TValue>;
if (changeTrackingDictionary != null)
return !changeTrackingDictionary.IsUndefined;
return true;
}
public static bool IsDefined<T>(T? value) where T : struct
{
return value.HasValue;
}
public static bool IsDefined(object value)
{
return value != null;
}
public static bool IsDefined(JsonElement value)
{
return value.ValueKind != JsonValueKind.Undefined;
}
public static bool IsDefined(string value)
{
return value != null;
}
}
}