예제 #1
0
        public override long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
        {
            var s         = (string)this[i];
            var available = s.Length - (int)fieldoffset;

            if (available <= 0)
            {
                return(0);
            }

            var count = TypeHelpers.Min(length, available);

            s.CopyTo((int)fieldoffset, buffer, bufferoffset, count);
            return(count);
        }
예제 #2
0
        public override int GetValues(object[] values)
        {
            // duplicate the key fields on the stack
            var members  = _memberNames;
            var current  = this.current;
            var accessor = this.accessor;

            var count = TypeHelpers.Min(values.Length, members.Length);

            for (var i = 0; i < count; i++)
            {
                values[i] = accessor[current, members[i]] ?? DBNull.Value;
            }
            return(count);
        }
예제 #3
0
        public override long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
        {
            var s         = (byte[])this[i];
            var available = s.Length - (int)fieldOffset;

            if (available <= 0)
            {
                return(0);
            }

            var count = TypeHelpers.Min(length, available);

            Buffer.BlockCopy(s, (int)fieldOffset, buffer, bufferoffset, count);
            return(count);
        }