Вы мало что можете сделать с "T obj", если не сообщите компилятору, какие дополнительные интерфейсы он поддерживает.
* 1003 Е.Г. *
IRequestHandler.ParseRequest<T>(string request, T obj)
where T : IOrderInfo
{
var req = RequestHandlerGateway.DeserializeFromXml<OrderMessageSalesOrder>(request, "SalesOrder");
obj.OrderId = req.Id;
return true;
}
Предполагая, что IOrderInfo определяет свойство OrderId, а OrderMessageSalesOrder предоставляет свойство Id (или поле).
Ссылка необходима только в том случае, если вы намереваетесь создать новый экземпляр T:
IRequestHandler.ParseRequest<T>(string request, ref T obj)
where T : IOrderInfo, new()
{
var req = RequestHandlerGateway.DeserializeFromXml<OrderMessageSalesOrder>(request, "SalesOrder");
obj = new T();
obj.OrderId = req.Id;
return true;
}
Если вы намереваетесь привести десериализованный объект req к obj, приведенных выше ответов должно быть достаточно, но тогда я думаю, что вы находитесь на шатком основании.