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

本文关键字:对象 添加 属性 是否 | 更新日期: 2023-09-27 17:58:49

我有以下函数

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。

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

为什么不更改函数以遍历实体:

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();
    }

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

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