Список <object>в качестве аргумента метода, передаваемого через прокси службы между двумя вызовами службы - PullRequest
0 голосов
/ 28 января 2020

У меня есть служба без сохранения состояния. c Azure Приложения, которые имеют аргумент метода в виде списка. Например,

sourceService:
--------------
    List<object> listObject = new List<object>();
     listObject.Add(123);//integer
     listObject.Add("abc");//string
     listObject.Add(listObject);//list of list
     listObject.Add(object);//any object

     serviceproxy.MyMethod(listObject );//service proxy call

destinationService:
------------------
  public async static MyMethod(List<object> listObjects){
   //to do operation on list
   //dynamically parse list based on type serialization and deserialization
  }

, так как, как передать список объектов в качестве аргумента одной службе другой службе или может быть другим способом вызова, пожалуйста, предложите какой-нибудь способ для анализа списка в конце службы путем передачи любого типа аргументов как Параметры метода.

Заранее спасибо.

1 Ответ

0 голосов
/ 30 января 2020

Вы должны аннотировать свой контракт данных с KnownType атрибутами для каждого типа элемента, который может встречаться в списке. В противном случае принимающая сторона не знает, какой тип создать при десериализации сообщения. Атрибут позволяет генерировать метаданные о содержащихся типах. Проверьте ссылку для получения дополнительной информации.

[DataContract]
[KnownType(typeof(CircleType))]
[KnownType(typeof(TriangleType))]
public class MyList : List<Shape>
{
    [DataMember]
    public Shape ShapeOfLogo;
}
...