none
Instanciar una clase Partial

    Pregunta

  • Hola. Feliz año nuevo a todos.

    ¿Cómo instanciar una clase Partial ya que me da error.

    La clase es la siguiente:

    System.SerializableAttribute(), System.Diagnostics.DebuggerStepThroughAttribute(), System.ComponentModel.DesignerCategoryAttribute("code"), System.Xml.Serialization.XmlTypeAttribute([Namespace]:="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03")> Partial Public Class PaymentInstructionInformation3 Private pmtInfIdField As String Private pmtMtdField As PaymentMethod3Code Private btchBookgField As Boolean Private btchBookgFieldSpecified As Boolean Private nbOfTxsField As String Private ctrlSumField As Decimal Private ctrlSumFieldSpecified As Boolean Private pmtTpInfField As PaymentTypeInformation19 Private reqdExctnDtField As Date Private poolgAdjstmntDtField As Date Private poolgAdjstmntDtFieldSpecified As Boolean Private dbtrField As PartyIdentification32 Private dbtrAcctField As CashAccount16 Private dbtrAgtField As BranchAndFinancialInstitutionIdentification4 Private dbtrAgtAcctField As CashAccount16 Private ultmtDbtrField As PartyIdentification32 Private chrgBrField As ChargeBearerType1Code Private chrgBrFieldSpecified As Boolean Private chrgsAcctField As CashAccount16 Private chrgsAcctAgtField As BranchAndFinancialInstitutionIdentification4 Private cdtTrfTxInfField() As CreditTransferTransactionInformation10

    y al instanciar la clase me da el error siguiente:

    Error BC30311 El valor de tipo 'PaymentInstructionInformation3' no se puede convertir en 'PaymentInstructionInformation3()'.

    La instancia que hago es normal:

    .PmtInf = New PaymentInstructionInformation3
                    With .PmtInf

    No veo la forma de solucionarlo.

    Muchas gracias y saludos.

    martes, 3 de enero de 2017 16:05

Respuestas

  • "Ángelroso" escribió:

    > La clase es la siguiente:
    >
    > Partial Public Class PaymentInstructionInformation3
    >
    >   ...
    >   ...
    >   ...
    >
    > End Class
    >
    > y al instanciar la clase me da el error siguiente:
    >
    > Error BC30311
    > El valor de tipo 'PaymentInstructionInformation3' no se puede convertir en
    'PaymentInstructionInformation3()'.
    >
    > La instancia que hago es normal:
    >
    > .PmtInf = New PaymentInstructionInformation3
    >     With .PmtInf

    Hola:

    La verdad es que ignoro el motivo por el cual no has incluido la declaración de la supuesta variable objeto del tipo PaymentInstructionInformation3 llamada PmtInf.

    De todas maneras, el error te está diciendo que un valor del tipo 'PaymentInstructionInformation3' no se puede convertir en UNA MATRIZ DE OBJETOS 'PaymentInstructionInformation3()'. ¿Observas los paréntesis al final del nombre de la clase? Eso significa que es una MATRIZ o ARRAY.

    > Estoy buscando y solo he encontrado lo siguiente:
    >
    > Public Property PmtInf() As PaymentInstructionInformation3()
    >    Get
    >        Return Me.pmtInfField
    >    End Get
    >    Set
    >        Me.pmtInfField = value
    >    End Set
    > End Property

    Esa declaración de propiedad precisamente devuelve una MATRIZ de objetos PaymentInstructionInformation3 (nuevamente hago hincapié en los paréntesis finales).

    > .PmtInf = New PaymentInstructionInformation3

    Si el campo, variable o lo que sea .PmtInf, hace referencia a la propiedad llamada PmtInf indicada (que establece y devuelve una MATRIZ), es totalmente correcto el error que estás recibiendo, porque a dicha variable le tendrías que asignar una MATRIZ de objetos PaymentInstructionInformation3:

        ' Le asignamos una nueva matriz con tres objetos PaymentInstructionInformation3
        .PmtInf = New PaymentInstructionInformation3(){objetoPayment1, objetoPayment2, objetoPayment3}

    Por eso te preguntaba cuál ha sido el inconveniente que has tenido para no publicar la declaración que tiene la variable llamada PmtInf, porque una clase Partial se declara e instancia lo mismo que otra que no tenga un archivo aparte con la palabra clave Partial. ;-)

    Un saludo y ¡Feliz Año Nuevo!


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    jueves, 5 de enero de 2017 7:45
    Moderador

Todas las respuestas

  • hola

    estas seguro que no defines dos clases PaymentInstructionInformation3 distintas ? o sea con el mismo nombre pero en namespaces diferentes o en diferentes proyecto

    la clases partial se instancia igual que cualquier clase ya que lo percial solo se usa para dividir fisicamente el codigo en dos archivo distintos, pero debe estar definido bajo el mismo namespace

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 3 de enero de 2017 16:55
  • Hola, Leandro.

    Estoy buscando y solo he encontrado lo siguiente:

     Public Property PmtInf() As PaymentInstructionInformation3()
            Get
                Return Me.pmtInfField
            End Get
            Set
                Me.pmtInfField = value
            End Set
        End Property

    Pero estas clases se generaron desde un esquema de una web oficial para la generación de ficheros para transferencias SEPA.

    Y no he leído nada sobre este error generado.

    Gracias y saludos.

    martes, 3 de enero de 2017 18:59
  • "Ángelroso" escribió:

    > La clase es la siguiente:
    >
    > Partial Public Class PaymentInstructionInformation3
    >
    >   ...
    >   ...
    >   ...
    >
    > End Class
    >
    > y al instanciar la clase me da el error siguiente:
    >
    > Error BC30311
    > El valor de tipo 'PaymentInstructionInformation3' no se puede convertir en
    'PaymentInstructionInformation3()'.
    >
    > La instancia que hago es normal:
    >
    > .PmtInf = New PaymentInstructionInformation3
    >     With .PmtInf

    Hola:

    La verdad es que ignoro el motivo por el cual no has incluido la declaración de la supuesta variable objeto del tipo PaymentInstructionInformation3 llamada PmtInf.

    De todas maneras, el error te está diciendo que un valor del tipo 'PaymentInstructionInformation3' no se puede convertir en UNA MATRIZ DE OBJETOS 'PaymentInstructionInformation3()'. ¿Observas los paréntesis al final del nombre de la clase? Eso significa que es una MATRIZ o ARRAY.

    > Estoy buscando y solo he encontrado lo siguiente:
    >
    > Public Property PmtInf() As PaymentInstructionInformation3()
    >    Get
    >        Return Me.pmtInfField
    >    End Get
    >    Set
    >        Me.pmtInfField = value
    >    End Set
    > End Property

    Esa declaración de propiedad precisamente devuelve una MATRIZ de objetos PaymentInstructionInformation3 (nuevamente hago hincapié en los paréntesis finales).

    > .PmtInf = New PaymentInstructionInformation3

    Si el campo, variable o lo que sea .PmtInf, hace referencia a la propiedad llamada PmtInf indicada (que establece y devuelve una MATRIZ), es totalmente correcto el error que estás recibiendo, porque a dicha variable le tendrías que asignar una MATRIZ de objetos PaymentInstructionInformation3:

        ' Le asignamos una nueva matriz con tres objetos PaymentInstructionInformation3
        .PmtInf = New PaymentInstructionInformation3(){objetoPayment1, objetoPayment2, objetoPayment3}

    Por eso te preguntaba cuál ha sido el inconveniente que has tenido para no publicar la declaración que tiene la variable llamada PmtInf, porque una clase Partial se declara e instancia lo mismo que otra que no tenga un archivo aparte con la palabra clave Partial. ;-)

    Un saludo y ¡Feliz Año Nuevo!


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    jueves, 5 de enero de 2017 7:45
    Moderador
  • Muchas gracias, Enrique.

    Voy a ver si así lo soluciono. Es que como las clases están generadas de un esquema, pues era raro que hubiese ese error.

    Saludos

    jueves, 5 de enero de 2017 21:52