SaintsHashSet<> / ReferenceHashSet<>A serializable HashSet<> for serializable type, SerializedReference type & interface type. Duplicated element will have a warning color.
If the type is an interface or an abstract class, the polymorphism picker will be used.
You can use SaintsHashSet attribute to control paging & searching
Parameters:
bool searchable = true:falseto disable the search functionint numberOfItemsPerPage = 0: how many items per page.0for no paging
public SaintsHashSet<string> stringHashSet; // default [SaintsHashSet(numberOfItemsPerPage: 5)] // paging control public SaintsHashSet<int> integerHashSet = new SaintsHashSet<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, }; public interface IReference { string Name { get; } } // ... implement of IReference omited here public SaintsHashSet<IReference> refHashSet;
Example of using on interface where you can pick either Unity Object or serializable class/struct:

ReferenceHashSet is used if you want to pick a polymorphism type (while the type itself is not abstract)
[Serializable] public class Sub1 : BaseC { public string sub1; } [Serializable] public class Sub2 : Sub1 { public string sub2; } // SaintsHashSet will treat it as a serializable type public SaintsHashSet<Sub1> noPolymorphism; // ReferenceHashSet will treat it as a reference type, allows you to pick polymorphism types public ReferenceHashSet<Sub1> polymorphism;
