Hi,
We need to serialize (binary) objects containing generic collections. The
thing is, when we try to get the objects back (deserialize) with a different
instance of the application, we receive an exception stating the constructor
of the generic class does not exist. So Is there a way to obtain the
resulting classes of the generics we use so we can add them as "normal" code
in our app? We can develop our own starting from non-generic collections,
but then we would have to develop our own methods and maintain them. The
generics are already debuged and maintained by MS so we would like to
generate them with the same generator the framework generates them if
possible.

So if I summarize what we want : We want to take the resulting class from a
given generic and "copy-paste" the code and create a "user class" that we
will add to our project.

Is it possible?

Thanks

ThunderMusic

Re: Generics and their resulting class. Possible to obtain? by raylopez99

raylopez99
Tue Aug 14 09:31:10 CDT 2007

On Aug 14, 7:11 am, "ThunderMusic"
<NoSpAmdanlatathotmaildot...@NoSpAm.com> wrote:
> Hi,
> We need to serialize (binary) objects containing generic collections. The
> thing is, when we try to get the objects back (deserialize) with a different
> instance of the application, we receive an exception stating the constructor
> of the generic class does not exist.

So there's your starting point. Do you have a constructor for the
generic class?

> So Is there a way to obtain the
> resulting classes of the generics we use so we can add them as "normal" code
> in our app?

What is "normal"?

> We can develop our own starting from non-generic collections,
> but then we would have to develop our own methods and maintain them. The
> generics are already debuged and maintained by MS so we would like to
> generate them with the same generator the framework generates them if
> possible.

Nothing is as it seems. MS code is not bug free. A while ago, a guy
had a problem here because he was using a structure rather than a
class--and precisely because of this, he had a problem (mixing
structures with classes is like mixing trucks with automobiles--they
don't really mix. Avoid structures).

>
> So if I summarize what we want : We want to take the resulting class from a
> given generic and "copy-paste" the code and create a "user class" that we
> will add to our project.
>
> Is it possible?

No. Not as you described it. It might help to know what interface
you're using.

Good luck,

RL


Re: Generics and their resulting class. Possible to obtain? by Jon

Jon
Tue Aug 14 09:38:41 CDT 2007

On Aug 14, 3:31 pm, raylopez99 <raylope...@yahoo.com> wrote:

<snip>

> Nothing is as it seems. MS code is not bug free. A while ago, a guy
> had a problem here because he was using a structure rather than a
> class--and precisely because of this, he had a problem (mixing
> structures with classes is like mixing trucks with automobiles--they
> don't really mix. Avoid structures).

Structures and classes mix absolutely fine - you just need to know
what's going on. If you don't understand how each of them works, then
indeed you'll get problems.

Jon


Re: Generics and their resulting class. Possible to obtain? by ThunderMusic

ThunderMusic
Tue Aug 14 09:37:45 CDT 2007

hi,

ok... maybe I explained it wrong... let's take Dictionary<int, string>.
When I instanciate one of those, .NET generates on-the-fly a new class for
Dictionary<int, string> (or maybe it's at compile time, but the problem
stays the same for us because it's a web app, so it can be recompiled at any
time). If I serialize it, it works fine. If I deserialize it within the same
app instance, it works fine. If a new instance is started and I try to
deserialize it, then I get an exception stating there is no constructor for
Dictionary<int, string>.

So, what I want to know is if it is possible to get the resulting class (The
one .NET generates from Dictionary<int, string>) so we can take the code and
put it in a file in our project so the class always stays the exact same
class?

btw, I know MS code is not bug free, but if we can build on something that
was tested by thousands if not millions of users (developers), we go for it.

Thanks

ThunderMusic


"raylopez99" <raylopez99@yahoo.com> wrote in message
news:1187101870.493116.231080@k79g2000hse.googlegroups.com...
> On Aug 14, 7:11 am, "ThunderMusic"
> <NoSpAmdanlatathotmaildot...@NoSpAm.com> wrote:
>> Hi,
>> We need to serialize (binary) objects containing generic collections. The
>> thing is, when we try to get the objects back (deserialize) with a
>> different
>> instance of the application, we receive an exception stating the
>> constructor
>> of the generic class does not exist.
>
> So there's your starting point. Do you have a constructor for the
> generic class?
>
>> So Is there a way to obtain the
>> resulting classes of the generics we use so we can add them as "normal"
>> code
>> in our app?
>
> What is "normal"?
>
>> We can develop our own starting from non-generic collections,
>> but then we would have to develop our own methods and maintain them. The
>> generics are already debuged and maintained by MS so we would like to
>> generate them with the same generator the framework generates them if
>> possible.
>
> Nothing is as it seems. MS code is not bug free. A while ago, a guy
> had a problem here because he was using a structure rather than a
> class--and precisely because of this, he had a problem (mixing
> structures with classes is like mixing trucks with automobiles--they
> don't really mix. Avoid structures).
>
>>
>> So if I summarize what we want : We want to take the resulting class from
>> a
>> given generic and "copy-paste" the code and create a "user class" that we
>> will add to our project.
>>
>> Is it possible?
>
> No. Not as you described it. It might help to know what interface
> you're using.
>
> Good luck,
>
> RL
>



Re: Generics and their resulting class. Possible to obtain? by GlennDoten

GlennDoten
Tue Aug 14 09:52:51 CDT 2007

Jon Skeet [C# MVP] wrote:
> On Aug 14, 3:31 pm, raylopez99 <raylope...@yahoo.com> wrote:
>
> <snip>
>
>> Nothing is as it seems. MS code is not bug free. A while ago, a guy
>> had a problem here because he was using a structure rather than a
>> class--and precisely because of this, he had a problem (mixing
>> structures with classes is like mixing trucks with automobiles--they
>> don't really mix. Avoid structures).
>
> Structures and classes mix absolutely fine - you just need to know
> what's going on. If you don't understand how each of them works, then
> indeed you'll get problems.
>
> Jon
>

I send that! Structs are indeed incredibly handy items. They are great
for abstracting something that you might normally pass around as (say)
an int. A lot of times I'll create a struct for some business
concept--like a SKU--instead of just passing around an int. This is
incredibly handy for a lot of reasons.

I'm not quite sure how you would "mix" structs and classes anyhow...

--
-glenn-

Re: Generics and their resulting class. Possible to obtain? by Jon

Jon
Tue Aug 14 10:03:46 CDT 2007

On Aug 14, 3:52 pm, GlennDoten <gdo...@gmail.com> wrote:

<snip>

> I'm not quite sure how you would "mix" structs and classes anyhow...

I suspect Ray means in terms of putting a reference type variable as a
member of a struct. It's rarely useful, but it *does* work, and so
long as you understand what reference types and value types actually
do, there shouldn't be any surprises.

Jon


Re: Generics and their resulting class. Possible to obtain? by Nicholas

Nicholas
Tue Aug 14 12:59:11 CDT 2007

ThunderMusic,

If you are serializing a Dictionary<int, string> to a byte stream, then
you should be able to recreate that instance in any instance of an app that
requires a Dictionary<int, string>. There should be no errors here.

Can you recreate the example? I've done it here with that type, and
have no problems serializing/deserializing a dictionary like that and then
recreating the instance in another run of the app.


--
- Nicholas Paldino [.NET/C# MVP]
- mvp@spam.guard.caspershouse.com

"ThunderMusic" <NoSpAmdanlatathotmaildotcom@NoSpAm.com> wrote in message
news:eA2SGDo3HHA.4476@TK2MSFTNGP06.phx.gbl...
> hi,
>
> ok... maybe I explained it wrong... let's take Dictionary<int, string>.
> When I instanciate one of those, .NET generates on-the-fly a new class for
> Dictionary<int, string> (or maybe it's at compile time, but the problem
> stays the same for us because it's a web app, so it can be recompiled at
> any time). If I serialize it, it works fine. If I deserialize it within
> the same app instance, it works fine. If a new instance is started and I
> try to deserialize it, then I get an exception stating there is no
> constructor for Dictionary<int, string>.
>
> So, what I want to know is if it is possible to get the resulting class
> (The one .NET generates from Dictionary<int, string>) so we can take the
> code and put it in a file in our project so the class always stays the
> exact same class?
>
> btw, I know MS code is not bug free, but if we can build on something that
> was tested by thousands if not millions of users (developers), we go for
> it.
>
> Thanks
>
> ThunderMusic
>
>
> "raylopez99" <raylopez99@yahoo.com> wrote in message
> news:1187101870.493116.231080@k79g2000hse.googlegroups.com...
>> On Aug 14, 7:11 am, "ThunderMusic"
>> <NoSpAmdanlatathotmaildot...@NoSpAm.com> wrote:
>>> Hi,
>>> We need to serialize (binary) objects containing generic collections.
>>> The
>>> thing is, when we try to get the objects back (deserialize) with a
>>> different
>>> instance of the application, we receive an exception stating the
>>> constructor
>>> of the generic class does not exist.
>>
>> So there's your starting point. Do you have a constructor for the
>> generic class?
>>
>>> So Is there a way to obtain the
>>> resulting classes of the generics we use so we can add them as "normal"
>>> code
>>> in our app?
>>
>> What is "normal"?
>>
>>> We can develop our own starting from non-generic collections,
>>> but then we would have to develop our own methods and maintain them. The
>>> generics are already debuged and maintained by MS so we would like to
>>> generate them with the same generator the framework generates them if
>>> possible.
>>
>> Nothing is as it seems. MS code is not bug free. A while ago, a guy
>> had a problem here because he was using a structure rather than a
>> class--and precisely because of this, he had a problem (mixing
>> structures with classes is like mixing trucks with automobiles--they
>> don't really mix. Avoid structures).
>>
>>>
>>> So if I summarize what we want : We want to take the resulting class
>>> from a
>>> given generic and "copy-paste" the code and create a "user class" that
>>> we
>>> will add to our project.
>>>
>>> Is it possible?
>>
>> No. Not as you described it. It might help to know what interface
>> you're using.
>>
>> Good luck,
>>
>> RL
>>
>
>



Re: Generics and their resulting class. Possible to obtain? by Rene

Rene
Tue Aug 14 13:01:06 CDT 2007

> We need to serialize (binary) objects containing generic collections. The
> thing is, when we try to get the objects back (deserialize) with a
> different instance of the application, we receive an exception stating the
> constructor of the generic class does not exist.

Why is this happening? I am able to serialize (binary) a bunch of classes
into a file and then I am able to deserialize them at any time on different
instances of the application. Probably not the exact same thing you are
doing but equivalent.



What else do you have going on?



Re: Generics and their resulting class. Possible to obtain? by ThunderMusic

ThunderMusic
Tue Aug 14 14:57:17 CDT 2007

Thanks to everyone of you.
We finally found the problem. We read the exception stack wrong and thought
it was the actual System.Collections.Generics.Dictionary that was not
deserializable. The thing is, we made a custom Dictionary (that inherits
from Dictionary) that can be serialized in XML and it's called Dictionary
just the same, but in another namespace... The "Serialization" constructor
(the 7th constructor of Dictionary<>) was missing, so that's why we had this
exception. Now everything is back on track.

Thanks and sorry for the waste of time

ThunderMusic

"Rene" <a@b.com> wrote in message
news:uuw8W0p3HHA.1184@TK2MSFTNGP04.phx.gbl...
>> We need to serialize (binary) objects containing generic collections. The
>> thing is, when we try to get the objects back (deserialize) with a
>> different instance of the application, we receive an exception stating
>> the constructor of the generic class does not exist.
>
> Why is this happening? I am able to serialize (binary) a bunch of classes
> into a file and then I am able to deserialize them at any time on
> different instances of the application. Probably not the exact same thing
> you are doing but equivalent.
>
>
>
> What else do you have going on?
>
>