|
@ -89,12 +89,12 @@ namespace IPA.Config.Stores.Converters |
|
|
/// <typeparam name="TCollection">the type of the colleciton</typeparam>
|
|
|
/// <typeparam name="TCollection">the type of the colleciton</typeparam>
|
|
|
/// <typeparam name="TConverter">the type of the converter to use for <typeparamref name="T"/></typeparam>
|
|
|
/// <typeparam name="TConverter">the type of the converter to use for <typeparamref name="T"/></typeparam>
|
|
|
/// <seealso cref="CollectionConverter{T, TCollection}"/>
|
|
|
/// <seealso cref="CollectionConverter{T, TCollection}"/>
|
|
|
public class CollectionConverter<T, TCollection, TConverter> : CollectionConverter<T, TCollection> |
|
|
|
|
|
|
|
|
public sealed class CollectionConverter<T, TCollection, TConverter> : CollectionConverter<T, TCollection> |
|
|
where TCollection : ICollection<T> |
|
|
where TCollection : ICollection<T> |
|
|
where TConverter : ValueConverter<T>, new() |
|
|
where TConverter : ValueConverter<T>, new() |
|
|
{ |
|
|
{ |
|
|
/// <summary>
|
|
|
/// <summary>
|
|
|
/// Creates a <see cref="CollectionConverter{T, TCollection}"/> using the default converter for the
|
|
|
|
|
|
|
|
|
/// Creates a <see cref="CollectionConverter{T, TCollection}"/> using a default constructed <typeparamref name="TConverter"/>
|
|
|
/// element type. Equivalent to calling <see cref="CollectionConverter{T, TCollection}.CollectionConverter(ValueConverter{T})"/>
|
|
|
/// element type. Equivalent to calling <see cref="CollectionConverter{T, TCollection}.CollectionConverter(ValueConverter{T})"/>
|
|
|
/// with a default-constructed <typeparamref name="TConverter"/>.
|
|
|
/// with a default-constructed <typeparamref name="TConverter"/>.
|
|
|
/// </summary>
|
|
|
/// </summary>
|
|
@ -102,28 +102,136 @@ namespace IPA.Config.Stores.Converters |
|
|
public CollectionConverter() : base(new TConverter()) { } |
|
|
public CollectionConverter() : base(new TConverter()) { } |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// A <see cref="CollectionConverter{T, TCollection}"/> for an <see cref="ISet{T}"/>, creating a <see cref="HashSet{T}"/> when deserializing.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T">the element type of the <see cref="ISet{T}"/></typeparam>
|
|
|
|
|
|
/// <seealso cref="CollectionConverter{T, TCollection}"/>
|
|
|
public class ISetConverter<T> : CollectionConverter<T, ISet<T>> |
|
|
public class ISetConverter<T> : CollectionConverter<T, ISet<T>> |
|
|
{ |
|
|
{ |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="ISetConverter{T}"/> using the default converter for <typeparamref name="T"/>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <seealso cref="CollectionConverter{T, TCollection}.CollectionConverter()"/>
|
|
|
public ISetConverter() : base() { } |
|
|
public ISetConverter() : base() { } |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="ISetConverter{T}"/> using the specified underlying converter for values.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="underlying">the underlying <see cref="ValueConverter{T}"/> to use for the values</param>
|
|
|
public ISetConverter(ValueConverter<T> underlying) : base(underlying) { } |
|
|
public ISetConverter(ValueConverter<T> underlying) : base(underlying) { } |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates a new <see cref="ISet{T}"/> (a <see cref="HashSet{T}"/>) for deserialization.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="size">the size to initialize it to</param>
|
|
|
|
|
|
/// <param name="parent">the object that will own the new object</param>
|
|
|
|
|
|
/// <returns>the new <see cref="ISet{T}"/></returns>
|
|
|
protected override ISet<T> Create(int size, object parent) |
|
|
protected override ISet<T> Create(int size, object parent) |
|
|
=> new HashSet<T>(); |
|
|
=> new HashSet<T>(); |
|
|
} |
|
|
} |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// An <see cref="ISetConverter{T}"/> which default constructs a converter for use as the value converter.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T">the value type of the collection</typeparam>
|
|
|
|
|
|
/// <typeparam name="TConverter">the type of the converter to use for <typeparamref name="T"/></typeparam>
|
|
|
|
|
|
/// <seealso cref="ISetConverter{T}"/>
|
|
|
|
|
|
public sealed class ISetConverter<T, TConverter> : ISetConverter<T> |
|
|
|
|
|
where TConverter : ValueConverter<T>, new() |
|
|
|
|
|
{ |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="ISetConverter{T}"/> using a default constructed <typeparamref name="TConverter"/>
|
|
|
|
|
|
/// element type. Equivalent to calling <see cref="ISetConverter{T}.ISetConverter(ValueConverter{T})"/>
|
|
|
|
|
|
/// with a default-constructed <typeparamref name="TConverter"/>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <seealso cref="ISetConverter{T}.ISetConverter(ValueConverter{T})"/>
|
|
|
|
|
|
public ISetConverter() : base(new TConverter()) { } |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// A <see cref="CollectionConverter{T, TCollection}"/> for a <see cref="List{T}"/>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T">the element type of the <see cref="List{T}"/></typeparam>
|
|
|
|
|
|
/// <seealso cref="CollectionConverter{T, TCollection}"/>
|
|
|
public class ListConverter<T> : CollectionConverter<T, List<T>> |
|
|
public class ListConverter<T> : CollectionConverter<T, List<T>> |
|
|
{ |
|
|
{ |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="ListConverter{T}"/> using the default converter for <typeparamref name="T"/>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <seealso cref="CollectionConverter{T, TCollection}.CollectionConverter()"/>
|
|
|
public ListConverter() : base() { } |
|
|
public ListConverter() : base() { } |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="ListConverter{T}"/> using the specified underlying converter for values.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="underlying">the underlying <see cref="ValueConverter{T}"/> to use for the values</param>
|
|
|
public ListConverter(ValueConverter<T> underlying) : base(underlying) { } |
|
|
public ListConverter(ValueConverter<T> underlying) : base(underlying) { } |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates a new <see cref="List{T}"/> for deserialization.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="size">the size to initialize it to</param>
|
|
|
|
|
|
/// <param name="parent">the object that will own the new object</param>
|
|
|
|
|
|
/// <returns>the new <see cref="List{T}"/></returns>
|
|
|
protected override List<T> Create(int size, object parent) |
|
|
protected override List<T> Create(int size, object parent) |
|
|
=> new List<T>(size); |
|
|
=> new List<T>(size); |
|
|
} |
|
|
} |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// A <see cref="ListConverter{T}"/> which default constructs a converter for use as the value converter.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T">the value type of the collection</typeparam>
|
|
|
|
|
|
/// <typeparam name="TConverter">the type of the converter to use for <typeparamref name="T"/></typeparam>
|
|
|
|
|
|
/// <seealso cref="ListConverter{T}"/>
|
|
|
|
|
|
public sealed class ListConverter<T, TConverter> : ListConverter<T> |
|
|
|
|
|
where TConverter : ValueConverter<T>, new() |
|
|
|
|
|
{ |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="ListConverter{T}"/> using a default constructed <typeparamref name="TConverter"/>
|
|
|
|
|
|
/// element type. Equivalent to calling <see cref="ListConverter{T}.ListConverter(ValueConverter{T})"/>
|
|
|
|
|
|
/// with a default-constructed <typeparamref name="TConverter"/>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <seealso cref="ListConverter{T}.ListConverter(ValueConverter{T})"/>
|
|
|
|
|
|
public ListConverter() : base(new TConverter()) { } |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// A <see cref="CollectionConverter{T, TCollection}"/> for an <see cref="IList{T}"/>, creating a <see cref="List{T}"/> when deserializing.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T">the element type of the <see cref="IList{T}"/></typeparam>
|
|
|
|
|
|
/// <seealso cref="CollectionConverter{T, TCollection}"/>
|
|
|
public class IListConverter<T> : CollectionConverter<T, IList<T>> |
|
|
public class IListConverter<T> : CollectionConverter<T, IList<T>> |
|
|
{ |
|
|
{ |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="IListConverter{T}"/> using the default converter for <typeparamref name="T"/>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <seealso cref="CollectionConverter{T, TCollection}.CollectionConverter()"/>
|
|
|
public IListConverter() : base() { } |
|
|
public IListConverter() : base() { } |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="IListConverter{T}"/> using the specified underlying converter for values.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="underlying">the underlying <see cref="ValueConverter{T}"/> to use for the values</param>
|
|
|
public IListConverter(ValueConverter<T> underlying) : base(underlying) { } |
|
|
public IListConverter(ValueConverter<T> underlying) : base(underlying) { } |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates a new <see cref="IList{T}"/> (a <see cref="List{T}"/>) for deserialization.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="size">the size to initialize it to</param>
|
|
|
|
|
|
/// <param name="parent">the object that will own the new object</param>
|
|
|
|
|
|
/// <returns>the new <see cref="IList{T}"/></returns>
|
|
|
protected override IList<T> Create(int size, object parent) |
|
|
protected override IList<T> Create(int size, object parent) |
|
|
=> new List<T>(size); |
|
|
=> new List<T>(size); |
|
|
} |
|
|
} |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// An <see cref="IListConverter{T}"/> which default constructs a converter for use as the value converter.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T">the value type of the collection</typeparam>
|
|
|
|
|
|
/// <typeparam name="TConverter">the type of the converter to use for <typeparamref name="T"/></typeparam>
|
|
|
|
|
|
/// <seealso cref="IListConverter{T}"/>
|
|
|
|
|
|
public sealed class IListConverter<T, TConverter> : IListConverter<T> |
|
|
|
|
|
where TConverter : ValueConverter<T>, new() |
|
|
|
|
|
{ |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Creates an <see cref="IListConverter{T}"/> using a default constructed <typeparamref name="TConverter"/>
|
|
|
|
|
|
/// element type. Equivalent to calling <see cref="IListConverter{T}.IListConverter(ValueConverter{T})"/>
|
|
|
|
|
|
/// with a default-constructed <typeparamref name="TConverter"/>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <seealso cref="IListConverter{T}.IListConverter(ValueConverter{T})"/>
|
|
|
|
|
|
public IListConverter() : base(new TConverter()) { } |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |