コード例 #1
0
ファイル: ChainedRefList.cs プロジェクト: lbmaian/LbmLib
 public static IBaseRefList <T> ChainConcat <T>(this T[] left, IBaseRefList <T> right)
 {
     if (right.IsReadOnly)
     {
         return(left.ChainConcat(right.AsReadOnly()));
     }
     else
     {
         return(left.ChainConcat(right.AsNonReadOnly()));
     }
 }
コード例 #2
0
ファイル: ChainedRefList.cs プロジェクト: lbmaian/LbmLib
 public static IBaseRefList <T> ChainConcat <T>(this IBaseRefList <T> left, T[] right)
 {
     if (left.IsReadOnly)
     {
         return(left.AsReadOnly().ChainConcat(right));
     }
     else
     {
         return(left.AsNonReadOnly().ChainConcat(right));
     }
 }
コード例 #3
0
ファイル: ChainedRefList.cs プロジェクト: lbmaian/LbmLib
 public static IBaseRefList <T> ChainConcat <T>(this IBaseRefList <T> left, IBaseRefList <T> right)
 {
     // Don't need to use ChainedListExtensions.IsReadOnly(list) helper function, since arrays can't implement IRefList anyway.
     if (left.IsReadOnly || right.IsReadOnly)
     {
         return(left.AsReadOnly().ChainConcat(right.AsReadOnly()));
     }
     else
     {
         return(left.AsNonReadOnly().ChainConcat(right.AsNonReadOnly()));
     }
 }
コード例 #4
0
        public void ChainConcat_ReadOnlyLists()
        {
            string[]                    leftArray           = new[] { "a", "b", "c" };
            List <string>               leftList            = new List <string>(leftArray);
            IBaseRefList <string>       leftBaseRefList     = leftArray.AsRefList();
            IRefList <string>           leftRefList         = leftArray.AsRefList();
            IRefReadOnlyList <string>   leftRefReadOnlyList = leftArray.AsRefReadOnlyList();
            ReadOnlyCollection <string> leftReadOnlyList    = leftArray.AsReadOnly();         // or leftList.AsReadOnly()

            string[]                    rightArray           = new[] { "c", "d" };
            List <string>               rightList            = new List <string>(rightArray);
            IBaseRefList <string>       rightBaseRefList     = rightArray.AsRefList();
            IRefList <string>           rightRefList         = rightArray.AsRefList();
            IRefReadOnlyList <string>   rightRefReadOnlyList = rightArray.AsRefReadOnlyList();
            ReadOnlyCollection <string> rightReadOnlyList    = rightArray.AsReadOnly();         // or rightList.AsReadOnly()

            // Note: Following is not only testing runtime behavior, but also that the static binding of the appropriate ChainConcat extension method is correct.
            CommonFixedSizeOrReadOnlyChainListTests(leftArray, rightRefReadOnlyList, leftArray.ChainConcat(rightRefReadOnlyList), typeof(ChainedRefReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftArray, rightReadOnlyList, leftArray.ChainConcat(rightReadOnlyList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftList, rightRefReadOnlyList, leftList.ChainConcat(rightRefReadOnlyList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftList, rightReadOnlyList, leftList.ChainConcat(rightReadOnlyList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftBaseRefList, rightRefReadOnlyList, leftBaseRefList.ChainConcat(rightRefReadOnlyList), typeof(ChainedRefReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftBaseRefList, rightReadOnlyList, leftBaseRefList.ChainConcat(rightReadOnlyList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftRefList, rightRefReadOnlyList, leftRefList.ChainConcat(rightRefReadOnlyList), typeof(ChainedRefReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftRefList, rightReadOnlyList, leftRefList.ChainConcat(rightReadOnlyList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftRefReadOnlyList, rightArray, leftRefReadOnlyList.ChainConcat(rightArray), typeof(ChainedRefReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftRefReadOnlyList, rightList, leftRefReadOnlyList.ChainConcat(rightList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftRefReadOnlyList, rightBaseRefList, leftRefReadOnlyList.ChainConcat(rightBaseRefList), typeof(ChainedRefReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftRefReadOnlyList, rightRefList, leftRefReadOnlyList.ChainConcat(rightRefList), typeof(ChainedRefReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftRefReadOnlyList, rightRefReadOnlyList, leftRefReadOnlyList.ChainConcat(rightRefReadOnlyList), typeof(ChainedRefReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftRefReadOnlyList, rightReadOnlyList, leftRefReadOnlyList.ChainConcat(rightReadOnlyList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftReadOnlyList, rightArray, leftReadOnlyList.ChainConcat(rightArray), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftReadOnlyList, rightList, leftReadOnlyList.ChainConcat(rightList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftReadOnlyList, rightBaseRefList, leftReadOnlyList.ChainConcat(rightBaseRefList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftReadOnlyList, rightRefList, leftReadOnlyList.ChainConcat(rightRefList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftReadOnlyList, rightRefReadOnlyList, leftReadOnlyList.ChainConcat(rightRefReadOnlyList), typeof(ChainedReadOnlyList <string>));
            CommonFixedSizeOrReadOnlyChainListTests(leftReadOnlyList, rightReadOnlyList, leftReadOnlyList.ChainConcat(rightReadOnlyList), typeof(ChainedReadOnlyList <string>));
        }
コード例 #5
0
ファイル: ChainedRefList.cs プロジェクト: lbmaian/LbmLib
 public static IBaseRefList <T> ChainPrepend <T>(this IBaseRefList <T> list, params T[] itemsToPrepend) => itemsToPrepend.ChainConcat(list);
コード例 #6
0
ファイル: ChainedRefList.cs プロジェクト: lbmaian/LbmLib
 public static IBaseRefList <T> ChainAppend <T>(this IBaseRefList <T> list, params T[] itemsToAppend) => list.ChainConcat(itemsToAppend);