Solved

Is it possible to cast to generic 'object' type?

Posted on 2008-09-30
3
276 Views
Last Modified: 2013-12-17
Sorry for the C# beginner question but here goes...

say I have a declared type such as:
        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public struct SAMPLE_STRUCT
        {
            public UInt32 size;
            public Boolean boolVar;
            public Int32 intVar;
        };

and have instances of it as in

            SAMPLE_STRUCT ss1 = new SAMPLE_STRUCT();
            SAMPLE_STRUCT ss2 = new SAMPLE_STRUCT();

and I want to send it to a class that have generic methods such as

            byte[] ss1Array = sCopy.StructureToByteArray(ss1);
            sCopy.ByteArrayToStructure(ss1Array, ref ss2);

where the interface is defined as

                public byte[] StructureToByteArray(object obj)
                { ... }

                public void ByteArrayToStructure(byte[] byteArray, ref object obj)
                { ... }

How do I get around the following errors:

The best overloaded method match for 'BD.EpiCenter.Utility.clsStructCopy.ByteArrayToStructure(byte[], ref object)' has some invalid arguments      
Argument '2': cannot convert from 'ref TestStructCopy.Program.SAMPLE_STRUCT' to 'ref object'

Is there a way to cast a typed variable to an obect/ref object such as
           sCopy.ByteArrayToStructure(ss1Array, ref (object) ss2);

which obviously does not work or must I introduce a temporary object to pass into the method and copy out of after it completes as below which does work?

           object ss2Obj = ss2;
            sCopy.ByteArrayToStructure(ss1Array, ref ss2);
            ss2 = (SAMPLE_STRUCT) ss2Obj;
0
Comment
Question by:mfenske17363
  • 2
3 Comments
 
LVL 5

Accepted Solution

by:
johnaryan earned 125 total points
ID: 22606688
What you're referring to is known as "boxing" in c#

Here's a reference to an example
http://www.java2s.com/Tutorial/CSharp/0120__struct/Boxandunboxastruct.htm
0
 

Author Comment

by:mfenske17363
ID: 22607281
So there is no way to cast down a type to a base 'object' and that I would need to create a new generic object instance and manipulate/pass it where a parameter of type 'object' is needed?

0
 
LVL 5

Expert Comment

by:johnaryan
ID: 22609134
Not if it's a value type (like a struct), you could have created it as a class instead and then you could have cast it to an object type.
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Summary Displaying images in RichTextBox is a common requirement with limited solutions available. Pasting through clipboard or embedding into RTF content only support static images.  This article describes how to insert Windows control objects int…
This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

840 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