[
https://issues.apache.org/jira/browse/AMQNET-440?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13730292#comment-13730292
]
Claudio Corsi commented on AMQNET-440:
--------------------------------------
The reason that your code is not working is that it is converting it into a
IObjectMessage instead of an IEmployee instance in the first two cases.
While the last case is converting the Body into an IEmployee instance which is
what is expected. The body contains the bytes that are required to create the
IEmployee instance which is being held by the IObjectMessage instance.
I would assume that replacing the following:
//Following code is not working
IEmployee emp = objMessage.ToObject<IEmployee>();
//Following code is not working
IEmployee emp1 = objMessage.ToObject() as IEmployee;
with
//Following code is not working
IEmployee emp = objMessage.body.ToObject<IEmployee>();
//Following code is not working
IEmployee emp1 = objMessage.body.ToObject() as IEmployee;
will resolve the issue that you are seeing.
> IObjectMessage.ToObject<T> is not working
> -----------------------------------------
>
> Key: AMQNET-440
> URL: https://issues.apache.org/jira/browse/AMQNET-440
> Project: ActiveMQ .Net
> Issue Type: Bug
> Affects Versions: 1.6.0
> Environment: activeMQ 5.8.0, C# API NMS 1.6.0
> Reporter: Tamilmaran
>
> Hi
> I am working on NMS API 1.6.0. i am not able to deserizile using the
> following object deserilization mechanism
> objMessage.ToObject<T> or
> objMessage.ToObject() as T
> Please help us to overcome the issue.
> Please find our codes below.
> The code sample:
> {code}
> _consumer.Listener += new MessageListener(OnMessage);
> Employee emp = new Employee();
> emp.FirstName = "raj";
> emp.LastName = "esh";
>
> IObjectMessage objectMessage = producer.CreateObjectMessage(emp);
> objectMessage.NMSType = emp.GetType().ToString();
> producer.Send(objectMessage);
> {code}
> {code}
> protected static void OnMessage(IMessage receivedMsg)
> {
> IObjectMessage objMessage = receivedMsg as IObjectMessage;
> //Following code is not working
> IEmployee emp = objMessage.ToObject<IEmployee>();
> //Following code is not working
> IEmployee emp1 = objMessage.ToObject() as IEmployee;
> //Following code is working
> IEmployee iEmp = objMessage.Body as IEmployee;//This code only is working
> }
> {code}
> {code}
> public interface IEmployee
> {
> string FirstName { get; set; }
> string LastName { get; set; }
> }
> {code}
> {code}
> [Serializable]
> public class Employee : IEmployee
> {
> #region IEmployee Members
> private string _firstName;
> private string _lastName;
> public string FirstName
> {
> get
> {
> return this._firstName;
> }
> set
> {
> this._firstName = value;
> }
> }
> public string LastName
> {
> get
> {
> return this._lastName;
> }
> set
> {
> this._lastName = value;
> }
> }
> #endregion
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira