1

我有一个用于初始化 DbRecordData 的变体

public class DbRecordData : IList<DbFieldValue>, ICollection<DbFieldValue>, IEnumerable<DbFieldValue>, IEnumerable
{
    public DbRecordData(DataRow row);
    public DbRecordData(int countValues);

    public int Count { get; }

    public DbFieldValue this[int index] { get; set; }

    public int Add(DbFieldValue item);
    public int Add(string fieldName, object value);
    public int Add(DataRow row, string fieldName, SqlDbType dataType);
    public int Add(string fieldName, SqlDbType dataType, object value);
    public void Clear();
    public void FillSqlParameters(SqlParameter[] parameters, int fromIndex);
} 

这是初始化:

 DbRecordData dbRecord = new DbRecordData(2)
                        {
                            {"VehMarkName", SqlDbType.NVarChar, vehMarkName},
                            {"refVehTypeId", SqlDbType.Int, refVehTypeId}
                        };    

这有效并且不会产生警告,但我在 msdn 中没有找到相同的示例。这个变体正确吗?还是黑客?

4

2 回答 2

0

它当然有效,是的。它相当于:

DbRecordData tmp = new DbRecordData(2);
tmp.Add("VehMarkName", SqlDbType.NVarChar, vehMarkName);
tmp.Add("refVehTypeId", SqlDbType.Int, refVehTypeId);
DbRecordData dbRecord = tmp;

如果这基本上是您编写的代码,那么我更喜欢您的对象初始化程序版本。如果您想要不同的代码,那么您可能需要重新考虑。

于 2012-06-26T13:42:01.197 回答
-1

它有效,但未在 MSDN 中记录:http: //msdn.microsoft.com/en-us/library/bb384062.aspx

对于企业代码,使用未记录的功能是不正确的。因为在最新版本的 .NET 中可能会破坏对这种构造的支持

记录的方式是

DbRecordData dbRecord = new DbRecordData(2)
                        {
                            new DbFieldValue("VehMarkName", SqlDbType.NVarChar, vehMarkName),
                            new DbFieldValue("refVehTypeId", SqlDbType.Int, refVehTypeId)
                        };  

但这个版本不仅仅是复杂的

DbRecordData dbRecord = new DbRecordData(2)
dbRecord.Add("VehMarkName", SqlDbType.NVarChar, vehMarkName);
dbRecord.Add("refVehTypeId", SqlDbType.Int, refVehTypeId);
于 2012-06-26T14:18:49.993 回答