static StaticArrayRW() { var type = typeof(TArray); if (type.IsArray) { int rank = type.GetArrayRank(); var elementType = type.GetElementType(); Type internalType; switch (rank) { case 1: internalType = typeof(OneRankArrayRWCreater <>).MakeGenericType(elementType); break; case 2: internalType = typeof(TwoRankArrayRWCreater <>).MakeGenericType(elementType); break; default: internalType = typeof(MultiRankArrayRWCreater <,>).MakeGenericType(type, elementType); break; } Creater = (IArrayRWCreater <TArray>)Activator.CreateInstance(internalType); } else { throw new ArgumentException($"'{typeof(TArray).FullName}' is not a Array type."); } }
static StaticArrayRW() { if (typeof(TArray).IsArray) { Creater = (IArrayRWCreater <TArray>)Activator.CreateInstance(GetCreaterType()); } else { throw new ArgumentException($"'{typeof(TArray).FullName}' is not a Array type."); } }