Прежде всего, вам нужно определить интерфейс как ServiceContract и метод, который возвращает Custom Collection как OperationContract.Я дам вам код на VB.net, bus очень и очень легко перевести его на c #
Imports System.ServiceModel
<ServiceContract()>
Public Interface IClientContract
<OperationContract()>
Function GetClientList() As IList(Of POCOClients)
End Interface
Здесь IList (из POCOClients) - это пользовательская коллекция.Затем реализуйте интерфейс.
Public Class ClientContractImplementation
Implements IClientContract
Private ClientOp As IClientsOperations
Sub New()
'I use a IoC container here, but you can make a standar New() at this point'
ClientOp = BLIoC.Container.Resolve(Of IClientsOperations)()
End Sub
Public Function GetClientList() As System.Collections.Generic.IList(Of ServiceLayerContract.POCOClients) Implements ServiceLayerContract.IClientContract.GetClientList
Return ClientOp.SearchClients()
End Function
End Class
И затем вам необходимо настроить app.config для предоставления службы WCF в разделе Service.ServiceModel:
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" name="MEX" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:81/Client"/>
</baseAddresses>
</host>
Теперь, когда клиент вызывает службу, будет возвращен пользовательский набор IList (POCOClients) (или что вы хотите).