我有一组没有键或顺序或其他明显索引的对象。
我希望将有关每个对象的数据存储在 DataTable 中。我认为这样做的一种优雅方法是将引用存储在所有者列中,并使该列类型为typeof(MyClass)
.
但是,当我在实践中尝试这样做时,它不起作用(它说主键冲突)。事实证明,将实例放入行字段只是将“ MyProgram.MyClass
”写入该字段 -toString
即使该行的类型应该是MyClass
not的输出string
。
下面是一些在 LINQPad 中工作的示例代码:
void Main()
{
// Create a table
var table = new DataTable();
var ownerColumn = new DataColumn("Owner", typeof(MyClass));
var primaryKey = new[] { ownerColumn };
table.Columns.AddRange(primaryKey);
table.PrimaryKey = primaryKey;
table.Columns.Add(new DataColumn("Some Data", typeof(int)) { DefaultValue = 0 });
// Create 2 objects
var c1 = new MyClass();
var c2 = new MyClass();
// Store their data in the table
var row = table.NewRow();
row["Owner"] = c1;
row["Some Data"] = 1;
table.Rows.Add(row);
row = table.NewRow();
row["Owner"] = c2;
row["Some Data"] = 2;
table.Rows.Add(row);
}
// Define other methods and classes here
class MyClass {
}
我该怎么做才能解决这个问题?我是否必须在 中创建一个id
字段MyClass
,然后用于id
填写所有者列,然后确保每个对象id
自己在创建时都收到一个唯一的?