/// <summary> /// Default constructor /// </summary> public LinkableComponentV1FluidEarth() : base(new Identity(new Describes("FluidEarthV1", "Converts a OpenMI V1 component implemented using FluidEarth V1 to OpenMI V2")), new ExternalType(typeof(LinkableComponentV1FluidEarth)), new ExternalType(typeof(IProxyEngine5)), true) { var v1ServerType = new ArgumentExternalType(GetArgumentIdentity(ArgsFE.ExternalTypeV1EngineServer), new ExternalType()); Arguments.Add(v1ServerType); // UnitTests use shadow copying, so have to go this route var uriExecuting = new Uri(Assembly.GetExecutingAssembly().CodeBase); var fileExecuting = new FileInfo(uriExecuting.LocalPath); var enginePath = Path.Combine(fileExecuting.DirectoryName, "FluidEarth2_Sdk_V1Wrappers.dll"); var engineType = new ExternalType(); engineType.Initialise(enginePath, "FluidEarth2.Sdk.V1Wrappers.Engine5"); ArgumentParametersNativeDll = new ParametersNativeDll(engineType, ParametersNativeDll.Interface.FluidEarth2_Sdk_Interfaces_IEngineTime, null, false); }
public void SetDefaultArguments() { // UnitTests use shadow copying, so have to go this route var uriExecuting = new Uri(Assembly.GetExecutingAssembly().CodeBase); var fileExecuting = new FileInfo(uriExecuting.LocalPath); var enginePath = Path.Combine(fileExecuting.DirectoryName, "FluidEarth2_Sdk_V1Wrappers.dll"); var engineType = new ExternalType(); engineType.Initialise(enginePath, "FluidEarth2.Sdk.V1Wrappers.Engine5"); ArgumentParametersNativeDll = new ParametersNativeDll(engineType, ParametersNativeDll.Interface.FluidEarth2_Sdk_Interfaces_IEngineTime, null, false); var serverExe = Arguments .Where(a => a.Caption == "FluidEarth_SDK.ArgFile.ServerExe" | a.Caption == "OpenWEB_SDK.ArgFile.ServerExe") .SingleOrDefault(); if (serverExe != null) { var serverType = Arguments .Where(a => a.Caption == "FluidEarth_SDK.Arg.ServerType" || a.Caption == "OpenWEB_SDK.Arg.ServerType") .SingleOrDefault(); string typeName = string.Empty; // Guess that implemented followed recommended naming conventions and structure so Engine exists if (serverType != null) typeName = serverType .ValueAsString .Substring(0, serverType.ValueAsString.LastIndexOf(".")) + ".Engine"; var nativeEngineWrapperType = new ExternalType(); nativeEngineWrapperType.Initialise( serverExe.ValueAsString, typeName); try { Type type; if (nativeEngineWrapperType.CreateInstance(out type) == null) nativeEngineWrapperType.TypeName = string.Empty; } catch (Exception) { nativeEngineWrapperType.TypeName = string.Empty; } if (nativeEngineWrapperType.TypeName == string.Empty) { // try again with unmodified name typeName = serverType.ValueAsString; nativeEngineWrapperType.Initialise(serverExe.ValueAsString, typeName); try { Type type; if (nativeEngineWrapperType.CreateInstance(out type) == null) nativeEngineWrapperType.TypeName = string.Empty; } catch (Exception) { nativeEngineWrapperType.TypeName = string.Empty; } } ArgumentEngineExternalType = nativeEngineWrapperType; } }