2013-05-19 1 views
0

클래스에 래핑 된 속성 집합을 사용하여 Azure 서비스 버스 대기열로 전달하는 C#의 메소드가 있습니다. 푸쉬 될 필요가있는 타입이 너무 많아서 익명의 객체를 가져 와서 BrokeredMessaging 클래스를 사용하여 서비스 버스 대기열로 전송하는 메소드를 작성했습니다. 이 선을 따라Azure의 서비스 버스 대기열에 익명 객체 보내기

뭔가 :이 코드가 작동하지

//I intially used the string type to know what type of class is passed 
//and then using switch statement, handle each case accordingly. 
//But it becomes a very long list of switch statements and I don't want that. 
public static bool QueueUp(Object obj, string type) 
{ 
    var msg = new BrokeredMessage(obj); 
    _sendObjClient.Send(msg); 
} 

. 이 메소드가 명시 적으로 형식화 된 객체를 전달하는 것으로부터 불리는 많은 장소를 저장하고 싶습니다. 그들은 단지 어떤 객체라도 보내야하고 코드의이 부분을 열심히하고 큐에 직렬화하여 보내길 바란다.

그냥 System.Reflection 네임 스페이스에 소개되었지만 실제로 목표를 달성하는 방법을 아직 잡히지 않았습니다. 도움이 될 것입니다.

+0

아마도 당신은 뭔가 잘못하고있는 것입니다. 그것은 모든 타입과 함께 작동해야하고 타입을'객체'로부터 자동으로 직렬화해야합니다. 이 형식에는 serializer가 serialize해야하는 내부 상태를 가져올 수 있도록 일부 특성이 있어야합니다. 더 설명해 주시겠습니까? * "이 코드는 작동하지 않습니다."*? – oleksii

+0

오케이. 그것은 예외를 던졌다. 내가 다시 돌려 보자. 던진 예외의 유형을 고를 것이다. – olatunjee

+0

그것은'System.InvalidOperationException' 예외를 던졌습니다. – olatunjee

답변

0

당신은 직렬화와 같은 개체의 클래스와 속성을 표시해야 - How to Use Service Bus Queues에서 : 전송

메시지 (과에서 수신) 서비스 버스 큐는 BrokeredMessage 클래스의 인스턴스입니다. BrokeredMessage 개체는 표준 속성 (예 : Label 및 TimeToLive) 집합, 이 사용자 지정 응용 프로그램 관련 속성을 저장하는 데 사용되는 사전 및 임의 응용 프로그램 본문이 있습니다. 응용 프로그램에서는 BrokeredMessage의 생성자에 serializable 개체를 전달하여 메시지 본문을 설정할 수 있으며 해당 DataContractSerializer는 개체를 serialize하는 데 사용됩니다. 또는 System.IO.Stream을 으로 제공 할 수 있습니다.

그런 다음 클래스를 직렬화 가능으로 표시하는 방법을 알아 보려면 SerializableAttribute Class을 검토하십시오.

+0

코드가 제대로 작동합니다. 하지만,'msg' 객체를 디버그하고 검사하면 여전히'System.InvalidOperationException'이 표시됩니다. 이유를 모르겠다. Azure SDK의 최신 버전을 사용하고 있습니다. – olatunjee

관련 문제