Этот цикл должен сделать это.
for(var key in obj){
channels[key].status = obj[key]
}
Ну, Вы могли изменить Метод на:
public static T Method<T,U>() where T : ClassA<U> where U : T
Это помогает вообще? Это не полезно, если Вы не можете изменить Метод, конечно...
Нет. Необходимо изменить или перенести этот метод.
Вот причина.
ClassC наследовался ClassB, который наследовался ClassA (ClassB)
ClassC не наследовался ClassA (ClassC)
Никакой ребенок ClassB не наследуется ClassA (дочерний класс), потому что они вместо этого наследовались ClassB, и ClassB не наследовался ClassA (дочерний класс).
В большинстве случаев возможно решить этот сценарий при наличии основного неуниверсального абстрактного класса:
public abstract class BasicClassA
{
}
public class ClassA<T> : BasicClassA
{
}
public class ClassB : ClassA<ClassB>
{
}
public class ClassC : ClassB
{
}
public static T Method<T>() where T : BasicClassA
{
return null;
}
Ваш пробег может варьироваться, все же.