/// <inheritdoc/> public List <KeyValuePair <string, ITestCase> > BulkDeserialize(List <string> serializations) { var callbackContainer = new DeserializeCallback(); Action <List <KeyValuePair <string, ITestCase> > > callback = callbackContainer.Callback; if (defaultTestCaseBulkDeserializer == null) { if (AppDomain.HasAppDomain) { try { AppDomain.CreateObject <object>(TestFrameworkAssemblyName, "Xunit.Sdk.TestCaseBulkDeserializer", RemoteDiscoverer, remoteExecutor, serializations, callback); if (callbackContainer.Results != null) { return(callbackContainer.Results); } } catch (TypeLoadException) { } // Only be willing to eat "Xunit.Sdk.TestCaseBulkDeserialize" doesn't exist } defaultTestCaseBulkDeserializer = new DefaultTestCaseBulkDeserializer(remoteExecutor); } return(defaultTestCaseBulkDeserializer.BulkDeserialize(serializations)); }
/// <summary> /// 从指定流反序列化数据。 /// </summary> /// <param name="stream">指定流。</param> /// <returns>反序列化的数据。</returns> public T Deserialize(Stream stream) { using (BinaryReader binaryReader = new BinaryReader(stream, Encoding.UTF8)) { byte[] header = GetHeader(); byte header0 = binaryReader.ReadByte(); byte header1 = binaryReader.ReadByte(); byte header2 = binaryReader.ReadByte(); if (header0 != header[0] || header1 != header[1] || header2 != header[2]) { throw new GameFrameworkException(Utility.Text.Format("Header is invalid, need '{0}{1}{2}', current '{3}{4}{5}'.", ((char)header[0]).ToString(), ((char)header[1]).ToString(), ((char)header[2]).ToString(), ((char)header0).ToString(), ((char)header1).ToString(), ((char)header2).ToString())); } byte version = binaryReader.ReadByte(); DeserializeCallback callback = null; if (!m_DeserializeCallbacks.TryGetValue(version, out callback)) { throw new GameFrameworkException(Utility.Text.Format("Deserialize callback '{0}' is not exist.", version.ToString())); } return(callback(binaryReader)); } }
List <KeyValuePair <string?, ITestCase?> > BulkDeserialize(List <string> serializations) { Guard.NotNull($"This instance of {typeof(Xunit2).FullName} was created for discovery only; execution-related operations cannot be performed.", remoteExecutor); var callbackContainer = new DeserializeCallback(); Action <List <KeyValuePair <string?, ITestCase?> > > callback = callbackContainer.Callback; if (bulkDeserializer == null) { if (AppDomain.HasAppDomain) { try { AppDomain.CreateObject <object>(TestFrameworkAssemblyName, "Xunit.Sdk.TestCaseBulkDeserializer", remoteDiscoverer, remoteExecutor, serializations, callback); if (callbackContainer.Results != null) { return(callbackContainer.Results); } } catch (TypeLoadException) { } // Only be willing to eat "Xunit.Sdk.TestCaseBulkDeserialize" doesn't exist } bulkDeserializer = new DefaultTestCaseBulkDeserializer(remoteExecutor); } return(bulkDeserializer.BulkDeserialize(serializations)); }
/// <summary> /// 注册反序列化回调函数。 /// </summary> /// <param name="version">反序列化回调函数的版本。</param> /// <param name="callback">反序列化回调函数。</param> public void RegisterDeserializeCallback(byte version, DeserializeCallback callback) { if (callback == null) { throw new GXException("Deserialize callback is invalid."); } m_DeserializeCallbacks[version] = callback; }
/// <summary> /// 从指定流反序列化数据。 /// </summary> /// <param name="stream">指定流。</param> /// <returns>反序列化的数据。</returns> public T Deserialize(Stream stream) { using (BinaryReader binaryReader = new BinaryReader(stream, Encoding.UTF8)) { byte[] header = GetHeader(); if (binaryReader.ReadByte() != header[0] || binaryReader.ReadByte() != header[1] || binaryReader.ReadByte() != header[2]) { throw new GXException("Header is invalid."); } byte version = binaryReader.ReadByte(); DeserializeCallback callback = null; if (!m_DeserializeCallbacks.TryGetValue(version, out callback)) { throw new GXException(Utility.Text.Format("Deserialize callback '{0}' is not exist.", version.ToString())); } return(callback(binaryReader)); } }
/// <summary> /// 从指定流反序列化数据。 /// </summary> /// <param name="stream">指定流。</param> /// <returns>反序列化的数据。</returns> public T Deserialize(Stream stream) { byte[] header = GetHeader(); byte header0 = (byte)stream.ReadByte(); byte header1 = (byte)stream.ReadByte(); byte header2 = (byte)stream.ReadByte(); if (header0 != header[0] || header1 != header[1] || header2 != header[2]) { throw new GameFrameworkException(Utility.Text.Format("Header is invalid, need '{0}{1}{2}', current '{3}{4}{5}'.", (char)header[0], (char)header[1], (char)header[2], (char)header0, (char)header1, (char)header2)); } byte version = (byte)stream.ReadByte(); DeserializeCallback callback = null; if (!m_DeserializeCallbacks.TryGetValue(version, out callback)) { throw new GameFrameworkException(Utility.Text.Format("Deserialize callback '{0}' is not exist.", version)); } return(callback(stream)); }
public void AddLayoutDeserializeCallback(DeserializeCallback callback) { _layoutDeserializeCallback.Add(callback); }