Pergunta : WCF aninhou tipos complexos

Olá!, o

I tem um problema expr uma classe através de WCF, quando está provendo um outro objeto, que eu goste de emitir também “abaixo do fio”. o
To facilita-o, é aqui uma estrutura simplificada que mostre o problema: o

There é 3 classes: Registro (uma classe baixa), OnsiteAppointment e cliente (ambos herdam do registro). class= " lineNumbers " >
1 do >

   _
    Classe pública OnsiteAppointment
        Herda o registro

        _startDate confidencial como o DateTime
         _
        Propriedade pública StartDate () como o DateTime
            Começ
                Retornar o _startDate
            A extremidade começ
            Ajustar (valor de ByVal como o DateTime)
                _startDate = valor
            Jogo da extremidade
        Propriedade da extremidade

_customer confidencial como o cliente
         _
        Cliente da propriedade pública () como o cliente
            Começ
                Retornar o _customer
            A extremidade começ
            Ajustar (valor de ByVal como o cliente)
                _customer = valor
            Jogo da extremidade
        Propriedade da extremidade

Classe da extremidade

  _
    Cliente público da classe
        Herda o registro

        _firstName confidencial como a corda
         _
        Propriedade pública FirstName () como a corda
            Começ
                Retornar o _firstName
            A extremidade começ
            Ajustar (valor de ByVal como a corda)
                _firstName = valor
            Jogo da extremidade
        Propriedade da extremidade
Classe da extremidade

 _
Registro público da classe

A tentativa " desobstruída " de >

I do class= da extremidade Class
1 do >

Função pública GetAppointments (startDate de ByVal como o endDate do DateTime, do ByVal como o DateTime) como os instrumentos IOnsiteScheduler.GetAppointments da lista (de OnsiteAppointment)

            Tentativa

                Nomeações não ofuscantes como a lista nova (de OnsiteAppointment)
…
                    Nomeação não ofuscante como OnsiteAppointment novo
                    appointment.ID = leitor (“appointmentId”)
                    appointment.StartDate = reader.SafeDate (“startDate”)
                    .                    
                    Cliente não ofuscante como o cliente novo
                    customer.FirstName = reader.SafeString (“firstName”)

                   nomeação. Cliente = cliente
                   nomeações. Adicionar (nomeação)
                   retornar nomeações
Terminar trabalhos " desobstruídos " de >

This do class= de Function

HTTP/1.1 504 - receber Failure
Content-Type: texto/html
Connection: close
Timestamp: 02:37: 54.822

ReadResponse () falhou: O usuário não retornou uma resposta para este pedido.                    o

… e naturalmente as falhas do cliente que recebem esta pergunta de message.

My é: Que são mim que faço erradamente aqui? o
Obviously “registro” não tem nenhum problema que está sendo expor, desde que OnsiteAppointment começ expor bem. Não há nenhum problema que expor o tipo aninhado (OnsiteAppointment.Customer) também. Assim porque importar-se-ia se o cliente herda de um tipo que trabalhasse bem como uma classe baixa para a outra classe?

Are lá algum tipo de limitações no nível de assentamento/de prover outros tipos ao retornar objetos? Eu gostaria de abster-se apenas de transferir coleções vazias lisas e então de “amarrá-las acima de” no cliente - eu preferiria transferir a estrutura do objeto apenas porque eu a tenho na ajuda do

Any da camada do negócio… seria grande!
Thanks

Environment: .NET 4.0, CONTRA 2010, IIS 7, Win7 64bit
class= do

Resposta : WCF aninhou tipos complexos

Olá!,

Em WCF você não pode substituir uma classe secundária para uma classe baixa diretamente como você pode em C#.

Você pode usar um atributo para poder passar a classe ao cliente. Isto é feito na relação do serviço

KnownType - permite que a classe seja passada durante todo todos os contratos e operações using a classe baixa.
Este é appliedto o DataContract.
C#: [KnownType (typeof (cliente))]

ServiceKnownType - permite que a classe seja passada somente para a operação em que é definida.
Isto é aplicado ao contrato de serviço.

Pessoal eu uso ServiceKnownType
C#: [ServiceKnownType (typeof (cliente))]
VB.NET: ustomer))> _

Ter um olhar aqui
http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceknowntypeattribute.aspx

Esperar que isto ajuda,

Darren
Outras soluções  
 
programming4us programming4us