DIP 45 - approval discussion

Jacob Carlborg doob at me.com
Wed Nov 13 00:55:29 PST 2013


On 2013-11-13 05:07, Andrei Alexandrescu wrote:

> Then how do you figure doing this:
>
> class Streamable { ... }
> class Foo : Streamable { ... }
> class Bar : Streamable { ... }
> string className = stream.readln();
> Streamable obj = ...;
>
> How do you create obj from className, when className could be either
> "Foo" or "Bar"? In the general case there could be any number of
> classes, in different modules.

This requires Object.factory (or equivalent) and that all subclasses 
have been registered as well. Since you don't know which subclass 
"className" represents you're forced to deserialize by doing this:

Streamable obj = deserialize!(Streamable)(className);

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list