[ascoders] Re: new Interface

  • From: Ralf Siegel <ralf@xxxxxxxxxxx>
  • To: ascoders@xxxxxxxxxxxxx
  • Date: Mon, 13 Sep 2004 23:19:24 +0200


 function GFlanger( sync: ISyncSource, source: ISoundSource )
 {
  output = new source['constructor']();
// [...]
 }

ISoundSource ist ein Interface, kann also von verschiedenen Klassen kommen
(nicht von GFlanger).
Aber ich brauche eine Instanz der 'richtigen' Klasse. Wie gesagt, wie oben
gehts, aber das kommt mir nicht richtig vor.

Das ist (für meinen Rotwein-getrübten Blick :o) auch nicht ganz richtig. Entweder du übergibst eine Instanz "source" an den Konstruktor, oder die Source-Klasse (type Function), oder den Namen der Klasse als String.


Vielleicht kannst du noch das Stück Code posten, wo du den Konstruktor aufrufst.

Im Logging Framework hatte ich das so gemacht:

http://code.audiofarm.de/Logger/

/**
* Returns the Filter object associated with the class with the given string name
*
* @return the Filter object
*/
public static function getNewFilterInstanceByName(className:String):IFilter
{
var Filter:Function = Class.forName(className);
if (!(new Filter instanceof IFilter)) {
throw new InvalidFilterError(className);
}
return new Filter();
}


------------------------------------------------------------------------------

-------------------------------------------------------------
Ralf Siegel - Freelance Developer
Recommended Listening: Blonde Redhead - Misery Is A Butterfly
http://www.blonde-redhead.com
-------------------------------------------------------------

------------------------------------------------------
Archiv   : //www.freelists.org/archives/ascoders/
Optionen : //www.freelists.org/list/ascoders
------------------------------------------------------

Other related posts: