internal static new unsafe DllHostEntryPointDescription CreateFromNative(IntPtr nativeDescriptionPtr) { NativeTypes.FABRIC_DLLHOST_ENTRY_POINT_DESCRIPTION *nativeDescription = (NativeTypes.FABRIC_DLLHOST_ENTRY_POINT_DESCRIPTION *)nativeDescriptionPtr; DllHostIsolationPolicy isolationPolicy = DllHostIsolationPolicy.Invalid; switch (nativeDescription->IsolationPolicyType) { case NativeTypes.FABRIC_DLLHOST_ISOLATION_POLICY.FABRIC_DLLHOST_ISOLATION_POLICY_SHARED_DOMAIN: isolationPolicy = DllHostIsolationPolicy.SharedDomain; break; case NativeTypes.FABRIC_DLLHOST_ISOLATION_POLICY.FABRIC_DLLHOST_ISOLATION_POLICY_DEDICATED_DOMAIN: isolationPolicy = DllHostIsolationPolicy.DedicatedDomain; break; case NativeTypes.FABRIC_DLLHOST_ISOLATION_POLICY.FABRIC_DLLHOST_ISOLATION_POLICY_DEDICATED_PROCESS: isolationPolicy = DllHostIsolationPolicy.DedicatedProcess; break; default: AppTrace.TraceSource.WriteError("DllHostEntryPointDescription.CreateFromNative", "Unknown isolation policy type : {0}", nativeDescription->IsolationPolicyType); ReleaseAssert.Failfast(string.Format(CultureInfo.CurrentCulture, StringResources.Error_UnknownIsolationPolicyType_Formatted, nativeDescription->IsolationPolicyType)); break; } List <DllHostHostedDllDescription> hostedDlls = new List <DllHostHostedDllDescription>(); if (nativeDescription->HostedDlls != IntPtr.Zero) { NativeTypes.FABRIC_DLLHOST_HOSTED_DLL_DESCRIPTION_LIST *nativeHostedDllDescriptionList = (NativeTypes.FABRIC_DLLHOST_HOSTED_DLL_DESCRIPTION_LIST *)nativeDescription->HostedDlls; for (int i = 0; i < nativeHostedDllDescriptionList->Count; ++i) { hostedDlls.Add(DllHostHostedDllDescription.CreateFromNative( nativeHostedDllDescriptionList->Items + (i * Marshal.SizeOf(typeof(NativeTypes.FABRIC_DLLHOST_HOSTED_DLL_DESCRIPTION))))); } } return(new DllHostEntryPointDescription() { IsolationPolicy = isolationPolicy, HostedDlls = hostedDlls }); }
private void IsolationPolicyTypeEnumTestHelper(NativeTypes.FABRIC_DLLHOST_ISOLATION_POLICY native, DllHostIsolationPolicy isolationPolicy) { HelperInstance.ParseTestHelper((info) => info.IsolationPolicyType = native, (description) => description.IsolationPolicy = isolationPolicy); }