C# 在C中合并对象会引发TargetException#
我正在合并两个任意对象,如下所示:C# 在C中合并对象会引发TargetException#,c#,merge,C#,Merge,我正在合并两个任意对象,如下所示: public void MergeWorkSpaceObjs<T>(T source, T target) { Type t = typeof(T); var properties = t.GetProperties().Where(prop => prop != null &&
public void MergeWorkSpaceObjs<T>(T source, T target)
{
Type t = typeof(T);
var properties = t.GetProperties().Where(prop =>
prop != null &&
prop.CanRead &&
prop.CanWrite);
foreach (var prop in properties)
{
var value = prop.GetValue(source);
if (value != null)
{
prop.SetValue(target, value);
}
}
var fields = t.GetFields();
foreach (var fi in fields)
{
var targetField = t.GetField(fi.Name);
targetField.SetValue(target, fi.GetValue(source));
}
}
我不确定那个错误到底意味着什么。在谷歌搜索之后,看起来这个错误与缺少的类实例化有关,或者有一个null属性,但我不确定在哪里,我还是C#新手
该错误是什么意思?我如何解决它?如何调用此函数?它看起来像是Irwinegarten的
source
是null
@当我试图从文件中合并配置时,在保存配置时,我会调用它。这里是上下文:您确定userConfig
不是null
?调试并查看
Test Name: SaveConfigs
Test FullName: Automata.Tests.WorkSpaceTest.SaveConfigs
Test Source: E:\Programming\C#\Automata\Automata.Tests\WorkSpaceTests.cs : line 47
Test Outcome: Failed
Test Duration: 0:00:00.014
Result StackTrace: at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
at Automata.WorkSpace.MergeObjs[T](T source, T target) in E:\Programming\C#\Automata\Automata\WorkSpace.cs:line 156
at Automata.WorkSpace.Save() in E:\Programming\C#\Automata\Automata\WorkSpace.cs:line 130
at Automata.Tests.WorkSpaceTest.SaveConfigs() in E:\Programming\C#\Automata\Automata.Tests\WorkSpaceTests.cs:line 48
Result Message: System.Reflection.TargetException : Non-static method requires a target.