0

我在课堂上有一个方法,我写在下面: -

 public void Insert<EntityColumn>(int foreignKeyId, EntityColumn column,
        TList<xyz> entity, TransactionManager transactionManager)
{
    entity.ForEach (
                 pca =>
                 {
                     pca.GetType().GetProperty(column.ToString()).SetValue(pca, foreignKeyId, null);
                     pca.EntityState = EntityState.Added;
                     _provider.payment.Insert(transactionManager, pca);
                 }
            );
}

现在我想从测试类中调用这个方法。代替 EntityColumn 列,我想发送对象的列名。这里的对象是我的表的表示。表名是 ClientData。说列是“InvoiceNo”。那么如何设置这个并传递给这个方法。请协助

4

1 回答 1

0

我目前无法访问我的开发人员工具,因此无法先进行测试。但是我认为,如果您更改为此,它将按照您的示例中所写的方式运行。

public void Insert<TableType>(int foreignKeyId, string columnName,
    TList<TableType> entity, TransactionManager transactionManager) {

    entity.ForEach(pca => {
        pca.GetType().GetProperty(columnName).SetValue(pca, foreignKeyId, null);
        pca.EntityState = EntityState.Added;
        _provider.payment.Insert(transactionManager, pca);
    });
}

我不确定这是否能解决您的问题,但您会注意到您仅使用列变量作为字符串来表示您想要调用的属性的名称,该名称由 TableType 表示。我从未见过需要知道列类型的地方,但也许我没有看到更大的图景。

既然你告诉它你的实体 TList 的类型,你根本不应该使用反射,我承认我仍然不明白你想要做什么。

于 2012-10-12T03:24:31.017 回答