我正在尝试深度复制一些列表。出现以下错误时,我使用System.Runtime.Serialization复制对象:System.ArgumentNullException:"值不能为null。(参数"图形"(">
非常感谢!!
克隆Methond
public static T Clone<T>(T RealObject)
{
using (Stream objectStream = new MemoryStream())
{
//利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(objectStream, RealObject);
objectStream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(objectStream);
}
}
示例
private void AddVariant()
{
ShouldRender();
Count++;
VKDTI VKDTI = KeyInfoMethod.GetNewVKDTI();
VKDTI.Variant = Count.ToString();
//l_VKDTI_TSI.Add(l_VKDTI_TSI.FirstOrDefault());
l_VKDTI_TSI_Copy.Add(KeyInfoMethod.Clone<VKDTI_TSI>(l_VKDTI_TSI.FirstOrDefault()));
l_VKDTI_VI_Copy.Add(KeyInfoMethod.Clone<VKDTI_VI>(l_VKDTI_VI.FirstOrDefault()));
l_VKDTI_DIMENSIONS_Copy.Add(KeyInfoMethod.Clone<VKDTI_DIMENSIONS>(l_VKDTI_DIMENSIONS.FirstOrDefault()));
l_VKDTI_VW_Copy.Add(KeyInfoMethod.Clone<VKDTI_VW>(l_VKDTI_VW.FirstOrDefault()));
l_VKDTI_ENGINE_Copy.Add(KeyInfoMethod.Clone<VKDTI_ENGINE>(l_VKDTI_ENGINE.FirstOrDefault()));
l_VKDTI_TRANSMISSION_Copy.Add(KeyInfoMethod.Clone<VKDTI_TRANSMISSION>(l_VKDTI_TRANSMISSION.FirstOrDefault()));
l_VKDTI_DRIVETRAIN_Copy.Add(KeyInfoMethod.Clone<VKDTI_DRIVETRAIN>(l_VKDTI_DRIVETRAIN.FirstOrDefault()));
l_VKDTI_TAW_Copy.Add(KeyInfoMethod.Clone<VKDTI_TAW>(l_VKDTI_TAW.FirstOrDefault()));
l_VKDTI_HUMP_Copy.Add(KeyInfoMethod.Clone<VKDTI_HUMP>(l_VKDTI_HUMP.FirstOrDefault()));
l_VKDTI_WAP_Copy.Add(KeyInfoMethod.Clone<VKDTI_WAP>(l_VKDTI_WAP.FirstOrDefault()));
l_VKDTI_PEDAL_Copy.Add(KeyInfoMethod.Clone<VKDTI_PEDAL>(l_VKDTI_PEDAL.FirstOrDefault()));
l_VKDTI_BOOSTER_Copy.Add(KeyInfoMethod.Clone<VKDTI_BOOSTER>(l_VKDTI_BOOSTER.FirstOrDefault()));
l_VKDTI_MC_Copy.Add(KeyInfoMethod.Clone<VKDTI_MC>(l_VKDTI_MC.FirstOrDefault()));
l_VKDTI_FB_Copy.Add(KeyInfoMethod.Clone<VKDTI_FB>(l_VKDTI_FB.FirstOrDefault()));
l_VKDTI_RB_Copy.Add(KeyInfoMethod.Clone<VKDTI_RB>(l_VKDTI_RB.FirstOrDefault()));
l_VKDTI_OVI_Copy.Add(KeyInfoMethod.Clone<VKDTI_OVI>(l_VKDTI_OVI.FirstOrDefault()));
l_VKDTI_Copy.Add(KeyInfoMethod.Clone<VKDTI>(l_VKDTI.FirstOrDefault()));
if (l_ESPTI_VAF_ALL_SELECTED.Count > 0)
{
l_ESPTI_VAF_ALL_Copy.Add(KeyInfoMethod.Clone<ESPTI_VAF_ALL>(l_ESPTI_VAF_ALL.FirstOrDefault()));
l_ESPTI_VAF_ALL_SELECTED_Copy.Add(KeyInfoMethod.Clone<ESPTI_VAF_ALL>(l_ESPTI_VAF_ALL_SELECTED.FirstOrDefault()));
}
StateHasChanged();
}
如果查看.Serialize的文档,可以发现Null不是graph
参数的有效值。在您的情况下,这将是RealObject
。
因此,您似乎正在尝试序列化一个null对象。您在很多地方使用.FirstOrDefault()
,这可能会返回null,从而导致您观察到的问题。通过插入nullcheck进行修复。