Exemplo n.º 1
0
        public static PullIndex Create(Pull pull, Type type, Type keyType, IComparer valueComparer)
        {
            object nullKey     = ListIndexFabric.GetNullKey(keyType);
            object keyComparer = null;

            if (keyType == typeof(string))
            {
                keyComparer = StringComparer.OrdinalIgnoreCase;
            }

            if (keyType.IsValueType || keyType.IsEnum)
            {
                var gtype = typeof(NullablePullIndex <,>).MakeGenericType(type, keyType);
                return((PullIndex)EmitInvoker.CreateObject(gtype, ctorTypes, new object[] { pull, nullKey, valueComparer, keyComparer }, true));
            }
            else
            {
                var gtype = typeof(PullIndex <,>).MakeGenericType(type, keyType);
                return((PullIndex)EmitInvoker.CreateObject(gtype, ctorTypes, new object[] { pull, nullKey, valueComparer, keyComparer }, true));
            }
        }
Exemplo n.º 2
0
 public override IListIndex CreateIndex()
 {
     return(ListIndexFabric.Create <T, IGroup>(this));
 }