On 11/13/13 12:55 AM, Jacob Carlborg wrote:
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.

With Object.factory that's taken care of already.

Since you don't know which subclass
"className" represents you're forced to deserialize by doing this:

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

Again there is a confusion here. The idea was to create an object with the dynamic type Foo if the class name was "Foo" and an object with the dynamic type Bar if the class name was "Bar". You are glossing over the gist of it all with a function call. Are you sure we are talking about the same thing?


Andrei

Reply via email to