我正在努力做到如下:
exception.Data = LoggedProperties;
但由于异常类的Data
属性具有私有设置器,因此不被接受。
所以我想在第一个或第二个词典上继续使用ForAll
。但是这个类没有类似的语法。
Dictionary.Keys
都不允许这样做。
他们也没有AddRange
。
那么如何使用紧凑语法从一个字典复制到另一个字典呢?
即。使用Linq还是lambda表达式?
答案 0 :(得分:2)
将您的异常包装在另一个 - (因为它是virtual
属性,您可以覆盖它):
public class ExceptionTest : Exception
{
private Dictionary<string, string> InternalData { get; set; }
public ExceptionTest(Dictionary<string, string> data)
{
InternalData = data;
}
public override Dictionary<string, string> Data
{
get
{
return InternalData;
}
}
}
或者您也可以在每个回合中遍历调用.Data.Add
的词典。
虽然两者都不漂亮。
至于复制字典,由于双方都是字典,所以很容易:
var newDictionary = new Dictionary<string, string>(originalDictionary);
或:
var newDictionary = originalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);