/// <summary> /// Constructor for native coded IEngine /// </summary> /// <param name="identity">Identity for the component</param> /// <param name="derivedComponentType">Type of derived class encapsulated as an ExternalType</param> /// <param name="engineType">Type of IEngine derived class encapsulated as an ExternalType</param> /// <param name="useNativeDllArgument">True if engineType is actually a .NEt wrapper for /// a native implementation of IEngine, i.e. uses C interface to talk to engine which /// might be in some non .NET language e.g. C++/FORTRAN/Python etc</param> public BaseComponentTimeWithEngine(IIdentifiable identity, ExternalType derivedComponentType, ExternalType engineType, bool useNativeDllArgument) : base(identity, derivedComponentType, engineType, useNativeDllArgument) { _timeExtent = new TimeSet(); _timeExtent.SetTimeHorizon(new Time()); var argTime = new ArgumentTime(GetArgumentIdentity(ArgsWithEngineTime.TimeHorizon), new Time(_timeExtent.TimeHorizon)); argTime.ValueChanged += new EventHandler<Argument<ArgumentValueTime>.ValueChangedEventArgs>(OnArgumentChangedTimeHorizon); Arguments.Add(argTime); // Base class sets typeof(RemotingServerEngineTime) not typeof(RemotingServerEngine) // Dont have a RemotingServerEngine as RemotingServerEngineTime only has one additional time method // which we can jsut ensure not to call! //((ArgumentParametersRemoting)Argument(GetArgumentIdentity(ArgsWithEngine.Remoting))).ParametersRemoting // = new ParametersRemoting(typeof(RemotingServerEngineTime); }