C# ConcurrentDictionary-将addValueFactory(Func<;string,T,T>;)转换为updateValueFactory(Func<;string,T,T>;)?
我使用的是一种在内部调用的方法 我想用相同的方法添加对insde的调用 但是,包含方法只接收一个C# ConcurrentDictionary-将addValueFactory(Func<;string,T,T>;)转换为updateValueFactory(Func<;string,T,T>;)?,c#,delegates,concurrentdictionary,C#,Delegates,Concurrentdictionary,我使用的是一种在内部调用的方法 我想用相同的方法添加对insde的调用 但是,包含方法只接收一个addValueFactory参数(Func) 要调用AddOrUpdate()方法,我还需要一个updateValueFactory(Func)。但是我不想更改方法签名 理想情况下,我希望使用现有的addValueFactory函数来创建一个updateValueFactory函数,该函数将产生相同的T结果 有什么方法可以将addValueFactory(Func)转换为udpateValueFac
addValueFactory
参数(Func
)
要调用AddOrUpdate()
方法,我还需要一个updateValueFactory
(Func
)。但是我不想更改方法签名
理想情况下,我希望使用现有的addValueFactory
函数来创建一个updateValueFactory
函数,该函数将产生相同的T
结果
有什么方法可以将addValueFactory(Func
)转换为udpateValueFactory(Func
)
public方法(字符串键,Func addValueFactory)
{
//现行守则
concurrentDictionary.GetOrAdd(key,addValueFactory)
//要添加的代码
//但是如何将(Func)转换为Func呢?
var updateValueFactory=?
concurrentDictionary.AddOrUpdate(键、addValueFactory、updateValueFactory)
}
我不是100%确定该使用什么标签。如果您认为可以改进,请更新它们。只需将其设置为带有未使用参数的lambda:
var updateValueFactory = (Func<String, T, T>)((str, old) => addValueFactory(str));
var updateValueFactory=(Func)((str,old)=>addValueFactory(str));
谢谢!这正是我想要的。
var updateValueFactory = (Func<String, T, T>)((str, old) => addValueFactory(str));