这个扩展方法线程安全吗?

时间:2015-09-19 18:50:47

标签: c#

我已经创建了在对象之间进行映射的扩展方法,但我担心它可能不是线程安全的。这是方法:

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对象永远不会更改。

1 个答案:

答案 0 :(得分:0)

猜测适用于实例方法的相同原理线程安全也适用于扩展方法。在上述情况下,每个访问ToSavableRecordForMongoDB方法的线程都将获取声明该方法的类的新实例。在这样的方法中,我看不到任何静态字段被修改。对我来说看起来很安全