31 lines
767 B
C#
31 lines
767 B
C#
|
using System.Collections.Concurrent;
|
|||
|
|
|||
|
namespace ServerDatabase;
|
|||
|
|
|||
|
internal static class Ext
|
|||
|
{
|
|||
|
internal static bool IsNullableEnum(this Type t)
|
|||
|
{
|
|||
|
Type u = Nullable.GetUnderlyingType(t)!;
|
|||
|
return (u != null) && u.IsEnum;
|
|||
|
}
|
|||
|
|
|||
|
public static OutputType[] Cast<InputType, OutputType>(InputType f)
|
|||
|
{
|
|||
|
Array inputArray_in = (Array)(object)f;
|
|||
|
var aRange = Partitioner.Create(0, inputArray_in.Length);
|
|||
|
OutputType[] aResult = new OutputType[inputArray_in.Length];
|
|||
|
|
|||
|
Parallel.ForEach(aRange, (r) =>
|
|||
|
{
|
|||
|
for (int i = r.Item1; i < r.Item2; i++)
|
|||
|
{
|
|||
|
aResult[i] = (OutputType)(inputArray_in.GetValue(i));
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
return aResult;
|
|||
|
}
|
|||
|
|
|||
|
}
|