System.Yaml.Serialization.YamlRepresenter.CreateBinaryArrayNode C# (CSharp) Méthode

CreateBinaryArrayNode() private méthode

private CreateBinaryArrayNode ( Array array ) : YamlNode
array Array
Résultat YamlNode
        private YamlNode CreateBinaryArrayNode(Array array)
        {
            var type = array.GetType();
            var element = type.GetElementType();
            if ( !TypeUtils.IsPureValueType(element) )
                throw new InvalidOperationException(
                    "Can not serialize {0} as binary because it contains non-value-type(s).".DoFormat(type.FullName));
            var elementSize = Marshal.SizeOf(element);
            var binary = new byte[array.LongLength * elementSize];
            int j = 0;
            for ( int i = 0; i < array.Length; i++ ) {
                IntPtr p = Marshal.UnsafeAddrOfPinnedArrayElement(array, i);
                Marshal.Copy(p, binary, j, elementSize);
                j += elementSize;
            }
            var dimension = "";
            if ( array.Rank > 1 ) {
                for ( int i = 0; i < array.Rank; i++ ) {
                    if ( dimension != "" )
                        dimension += ", ";
                    dimension += array.GetLength(i);
                }
                dimension = "[" + dimension + "]\r\n";
            }
            var result= str(TypeNameToYamlTag(type), dimension + Base64Encode(type, binary));
            result.Properties["Don'tCareLineBreaks"] = "true";
            return result;
        }