Я хочу вызвать универсальный метод, имеющий два разных параметра универсального типа.Вот как выглядит мой метод:
public class ABC<T> : IABC<T> where T: class,new()
{
public T Merge<T1>(T child, T parent, T1 rule){
}
}
Я хочу вызвать метод Merge из другого метода.Ниже я попытался вызвать его.
Type mergerType = GetType().GetGenericTypeDefinition();
Type constructed = mergerType.MakeGenericType(new[]
{
childValue.GetType()
});
object mergerInstance = Activator.CreateInstance(constructed);
MethodInfo methodInfo = GetType().GetMethod("Merge");
MethodInfo method = methodInfo.MakeGenericMethod(ruleValue.GetType());
mergedObject = method.Invoke(mergerInstance, new[]
{
childValue,
parentValue,
ruleValue
});
При этом я получаю исключение «объект не соответствует типу цели» после method.invoke()
.Я не могу изменить определение класса или метода класса ABC или метода Merge, потому что многие другие классы реализуют интерфейс IABC.Так может кто-нибудь ответить, как я могу вызвать метод слияния.