我已经创建了在对象之间进行映射的扩展方法,但我担心它可能不是线程安全的。这是方法:
public static SavableRecord ToSavableRecordForMongoDB(this Record record)
{
SavableRecord savableRecord = new SavableRecord();
if (record.Fields == null)
throw new ArgumentException("Fields of record cannot be null");
if (string.IsNullOrWhiteSpace(record.id))
savableRecord._id = record.id;
foreach (KeyValuePair<string, Field> item in record.Fields)
savableRecord.Fields[item.Key] = new Field(item.Value);
return savableRecord;
}
如果此方法不是线程安全的,我该怎么做才能使其线程安全。
record
对象在MVC项目的控制器中传递。在此控制器或其路径中,record
对象永远不会更改。
答案 0 :(得分:0)
猜测适用于实例方法的相同原理线程安全也适用于扩展方法。在上述情况下,每个访问ToSavableRecordForMongoDB方法的线程都将获取声明该方法的类的新实例。在这样的方法中,我看不到任何静态字段被修改。对我来说看起来很安全