Как я могу создать IDataParameter в функции и вернуть его?

Я не знаю, как этот вопрос правильный, но мое условие проекта в том, что мне нужна функция, которая получает значение и имя параметра и возвращает параметр для использования в некоторых командах.
Прототип, о котором я думаю, выглядит так:

public IDataParameter CreateParameter(string parameterName, object value)

Это так или иначе?

c#,

0

Ответов: 2


0

Хотя вы, безусловно, можете это сделать, это будет означать, что вам нужно будет жестко закодировать код в свою функцию, какой класс вы хотите создать для возвращаемого значения.

Лучше было бы передавать команды, потому что они должны знать, какой тип параметра им нужен.

Пример:

public IDbDataParameter CreateParameter(IDbCommand command, string parameterName, object value)
{
    var parameter = command.CreateParameter();

    parameter.ParameterName = parameterName;
    parameter.Value = value;

    return parameter;
}

0

Благодаря @nvoigt я создал класс для этого производного от IDBDataParameter.
Я добавил два конструктора на основе моего требования.

public class MyClass: IDbDataParameter
{
    public MyClass(string parameterName, object value)
    {
        ParameterName = parameterName;
        Value = value;
    }
    public MyClass(string parameterName, object value, DbType dbType)
    {
        ParameterName = parameterName;
        Value = value;
        DbType = dbType;
    }
    public DbType DbType { get; set; }
    public ParameterDirection Direction { get; set; }
    public bool IsNullable => throw new NotImplementedException();
    public string ParameterName { get; set; }
    public string SourceColumn { get; set; }
    public DataRowVersion SourceVersion { get; set; }
    public object Value { get; set; }
    public byte Precision { get; set; }
    public byte Scale { get; set; }
    public int Size { get; set; }
}


и использовать их в методе, подобном этому:

public IDbDataParameter CreateParameter(string parameterName, object value)
    {
        return new MyClass(parameterName, value);
    }


C #,
Похожие вопросы