Как определить свойство размера для выходных параметров хранимой процедуры в уровне доступа к данным C #

Я сделал слой доступа к данным, бесстыдно смоделированный на основе реализации ActiveRecord в Castle Project. Для того, чтобы он получил признание, он должен поддерживать обширную библиотеку хранимых процедур, используемых в моей организации, которые были написаны для использования каждой мыслимой структуры ввода / вывода, включая возвращаемые значения и выходные параметры каждого мыслимого типа данных.

Моя проблема заключается в разработке кода, который добавляет выходной параметр в коллекцию параметров объекта Command, используемого для выполнения хранимой процедуры. Прямо сейчас я просто использую большое значение по умолчанию, надеясь, что этого достаточно, чтобы отследить все случаи, но это кажется дрянным.

Как заранее узнать длину выходного параметра?

Вот мой класс DAL, использующий атрибуты для обозначения выходного параметра:

 [StoredProcedure("usp_PostARTransaction", OperationType.Insert)]
    public class ARTranPost : DataObjectBase<ARTranPost>
    {
        [StoredProcedureParameter("sARTranID",OperationType.Insert,ParameterDirection.Output)]
        public string ARTranID {get;set;}
        [StoredProcedureParameter("sDueDate", OperationType.Insert, ParameterDirection.Input)]
        public string DueDate { get; set; }
        [StoredProcedureParameter("sPostDate", OperationType.Insert, ParameterDirection.Input)]
        public string PostDate { get; set; }

    }

Нужно ли использовать SMO или какую-либо другую библиотеку, чтобы получить длину из базы данных?