Если T
в вашем примере является некоторым базовым классом, который наследуют все объекты очереди, , тогда вы можете просто передать это методу вместо T
:
public List<QueMessage> getMessagesFromObj1Queue<T>(QueueObjBase que) { ... }
В противном случае, если есть общий интерфейс, который будут реализованы всеми T
, используйте его как общее ограничение:
public List<QueMessage> getMessagesFromObj1Queue<T>(T que)
where T : [yourInterface]
{
}
Без общего ограничения на T
, компилятор не имеет никакой информации, чтобы знать, какой метод или свойства доступны, и поэтому может обрабатывать только T
как object
- что, конечно, не есть метод RecieveAll()
.