Solved

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

Posted on 2008-09-30
3
275 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

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

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

Suggested Solutions

Flash (http://en.wikipedia.org/wiki/Adobe_Flash) has evolved over the years to where it has become a masterful tool for displaying content screen.  It has excellent layout placement, UI precision as well as rendering capabilities. This, along with t…
In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…

770 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