Solved

object not set to instance of object when declaring a partial class

Posted on 2011-03-09
6
349 Views
Last Modified: 2012-05-11
Hello experts,
I normally know how to fix this, and its usually because i forgot a new keyword somewhere.  That is not the case.  I am using a partial class that generates a serialized xml.  I create a new instance of the class but it is still telling me object not set to instance of an object.   I used the xsd tool to create the class from a provided schema.  The generated class is below, i took out a lot of unecessary variables.  I have never worked with partial classes so i am wondering if that is the cause.

In my code i call the below class like so:
Function create_receipt_xml(byval bod_id as string) As Boolean
        Dim as2 As New ShowReceiptInfo
        Dim serializer = New XmlSerializer(GetType(ShowReceiptInfo))

        Try
            as2.ApplicationArea.BODId = bod_id  'I get the object not set to instance of object here
            header_info ="test"
           Dim string_writer As New StringWriter()
            serializer.Serialize(string_writer, as2)
            Dim LogDir As String = System.Configuration.ConfigurationSettings.AppSettings("LogDirectory")
            Log_Files(LogDir, string_writer.ToString(), headerid)

            'Send_Transaction(string_writer.ToString(), HeaderId, strURL)
            string_writer.Close()
            string_writer.Dispose()
            as2 = Nothing
        Catch ex As Exception
            MessageBox.Show("Failed to create int100 xml! " & ex.Message)
        End Try
    End Function
'------------------------------------------------------------------------------
' <auto-generated>
'     This code was generated by a tool.
'     Runtime Version:2.0.50727.3615
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On

Imports System.Xml.Serialization

'
'This source code was auto-generated by xsd, Version=2.0.50727.42.
'

'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42"), _
 System.SerializableAttribute(), _
 System.Diagnostics.DebuggerStepThroughAttribute(), _
 System.ComponentModel.DesignerCategoryAttribute("code"), _
 System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="http://mycompany.com/manufac"), _
 System.Xml.Serialization.XmlRootAttribute([Namespace]:="http://mycompany.com/ manufac ", IsNullable:=False)> _
Partial Public Class ShowReceiptInfo

    Private applicationAreaField As ShowReceiptInfoApplicationArea
    '''<remarks/>
    <System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
    Public Property ApplicationArea() As ShowReceiptInfoApplicationArea
        Get
            Return Me.applicationAreaField
        End Get
        Set(ByVal value As ShowReceiptInfoApplicationArea)
            Me.applicationAreaField = value
        End Set
    End Property

    End Property
End Class

'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42"),  _
 System.SerializableAttribute(),  _
 System.Diagnostics.DebuggerStepThroughAttribute(),  _
 System.ComponentModel.DesignerCategoryAttribute("code"),  _
 System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true, [Namespace]:="http://mycompany.com/manufac ")>  _
Partial Public Class ShowReceiptInfoApplicationArea
    
    Private bODIdField As String
    
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)>  _
    Public Property BODId() As String
        Get
            Return Me.bODIdField
        End Get
        Set
            Me.bODIdField = value
        End Set
    End Property
    
End Class

Open in new window

0
Comment
Question by:tentavarious
  • 4
  • 2
6 Comments
 
LVL 4

Expert Comment

by:parnasso
ID: 35085592
I think the compiler is telling you that the variable applicationAreaField has not been initialized. When declaring a class partial, the default constructor for your ShowReceiptInfo class is not doing something like : Dim applicationAreaField As New ShowReceiptInfoApplicationArea.

Declare another Partial Public Class ShowReceiptInfo with a default constructor that initializes the field applicationAreaField.

I hope my explanation was clear

0
 

Author Comment

by:tentavarious
ID: 35085636
Here is the xml schema i used to create class above

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
           targetNamespace="http://mycompany.com/manufac "
           xmlns:pre="http://mycompany.com/manufac">
  <xs:element name="ShowReceiptInfo">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ApplicationArea" form="unqualified">
                  <xs:element name="BODId" form="unqualified" type="xs:string"/>
              </xs:sequence>
          </xs:complexType>
        </xs:element>
       <xs:attribute name="environment" use="required"/>
      <xs:attribute name="lang" use="required"/>
      <xs:attribute name="revision" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
0
 

Author Comment

by:tentavarious
ID: 35085644
Could you provide an example, the code compiles fine, i get the error when i try and run it
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 4

Accepted Solution

by:
parnasso earned 500 total points
ID: 35085751
I didn't explained myself clearly. In addition to the code which is generated automatically, you can declare in your manually written code another part of the partial class:

Partial Public Class ShowReceiptInfo

    Private applicationAreaField As ShowReceiptInfoApplicationArea

    Private Sub Constructor()
        applicationAreaField =  New ShowReceiptInfoApplicationArea; // or default value you want
    End Sub

Open in new window


Then when you do in your code:

 as2.ApplicationArea.BODId = bod_id

It will work because the ApplicationArea now is not null.

By the way I'm sorry about the syntax errors in my VB.

0
 

Author Comment

by:tentavarious
ID: 35085883
Still no go
I tried adding the constructor and  doing this

Private applicationAreaField As New ShowReceiptInfoApplicationArea
0
 

Author Comment

by:tentavarious
ID: 35086160
Alright it worked thanks a lot, maybe you could take a look at another xml issue i am having.  It deals with the same project,  for some reason when i create the xml any tag i have containing a ":" gets replaced

take a look at this thread

http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_26870958.html
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Creating an analog clock UserControl seems fairly straight forward.  It is, after all, essentially just a circle with several lines in it!  Two common approaches for rendering an analog clock typically involve either manually calculating points with…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

862 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now