コード例 #1
0
ファイル: PROPVARIANT..cs プロジェクト: nmoschkin/DataTools5
        private Array GetVector <T>()
        {
            int count = PropVariantNativeMethods.PropVariantGetElementCount(this);

            if (count <= 0)
            {
                return(null);
            }

            lock (_padlock)
            {
                if (_vectorActions is null)
                {
                    _vectorActions = GenerateVectorActions();
                }
            }

            Action <PropVariant, Array, uint> action = null;

            if (!_vectorActions.TryGetValue(typeof(T), out action))
            {
                throw new InvalidCastException(LocalizedMessages.PropVariantUnsupportedType);
            }

            Array array = new T[count];

            for (int i = 0; i < count; i++)
            {
                action(this, array, (uint)i);
            }
            return(array);
        }