是否可以在c#中向对象添加属性

时间:2011-06-10 21:12:52

标签: c#

我有以下功能

public static void UpdateWithStoredProcedure<T>(string storedProcedure, T entity)
{
    var command = PrepareCommand(CommandType.StoredProcedure);
    command.CommandText = storedProcedure;
    AddObjectPropertiesAsParametersToCommand(command, entity);

    command.ExecuteNonQuery();
}

我这样称呼

UpdateWithStoredProcedure(DeleteDocumentStyleProcedure, new KeyValuePair<string, object>("Id", DocumentStyle.DocumentId));

有没有办法传递两个参数。我的意思是,两个KeyValuePair实例?我尝试传递列表和字典,但AddObjectPropertiesAsParametersToCommand的代码也映射了这些类的内部属性,如Count。

2 个答案:

答案 0 :(得分:1)

为什么不更改函数来迭代实体:

public static void UpdateWithStoredProcedure<T>(string storedProcedure, params T[] entities)
    {
        var command = PrepareCommand(CommandType.StoredProcedure);
        command.CommandText = storedProcedure;
        foreach(T entity in entities)
            AddObjectPropertiesAsParametersToCommand(command, entity);

        command.ExecuteNonQuery();
    }

答案 1 :(得分:0)

最后,我使用我需要的属性声明了一个新的内部类,并将其实例传递给AddObjectPropertiesAsParametersToCommand函数。

class UpdateLogoParameters
{
    public byte[] Logo{get;set;}
    public int DocumentId{get;set;}

    public UpdateLogoParameters(byte[] logo, int documentId)
    {
       Logo = logo;
       DocumentId = documentId;
    }
}