--- source_files: - Common/DTS.Common.ServiceLibrary/ServiceLibrary.cs - Common/DTS.Common.ServiceLibrary/IServiceLibrary.cs generated_at: "2026-04-16T14:11:58.139448+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "7c181fe270706bc1" --- # Documentation: DTS.Common.ServiceLibrary ## 1. Purpose This module provides a Windows Communication Foundation (WCF) service implementation within the `DTS.Common.ServiceLibrary` namespace. It serves as a service contract layer exposing two operations: a simple request-response pattern for integer-to-string conversion, and a data contract-based operation that demonstrates conditional modification of composite types. This appears to be a foundational or template service library intended for extension with additional service operations. --- ## 2. Public Interface ### Interface: `IServiceLibrary` Defined in `IServiceLibrary.cs`, marked with `[ServiceContract]` attribute. | Method | Signature | Description | |--------|-----------|-------------| | `GetData` | `string GetData(int value)` | Accepts an integer and returns a formatted string: `"You entered: {value}"`. | | `GetDataUsingDataContract` | `CompositeType GetDataUsingDataContract(CompositeType composite)` | Accepts a `CompositeType` object, conditionally modifies its `StringValue` property by appending `"Suffix"` if `BoolValue` is `true`, and returns the modified object. Throws `ArgumentNullException` if `composite` is `null`. | ### Class: `ServiceLibrary` Defined in `ServiceLibrary.cs`, implements `IServiceLibrary`. | Method | Signature | Behavior | |--------|-----------|----------| | `GetData` | `public string GetData(int value)` | Returns `string.Format("You entered: {0}", value)`. | | `GetDataUsingDataContract` | `public CompositeType GetDataUsingDataContract(CompositeType composite)` | Validates `composite` is non-null (throws `ArgumentNullException` otherwise). If `composite.BoolValue` is `true`, appends `"Suffix"` to `composite.StringValue`. Returns the modified `composite` object. | ### Class: `CompositeType` Defined in `IServiceLibrary.cs`, marked with `[DataContract]` attribute. | Property | Type | Default Value | Description | |----------|------|---------------|-------------| | `BoolValue` | `bool` | `true` | Marked with `[DataMember]`. Controls whether `GetDataUsingDataContract` appends suffix. | | `StringValue` | `string` | `"Hello "` | Marked with `[DataMember]`. Subject to modification by `GetDataUsingDataContract`. | --- ## 3. Invariants - **Null Argument Handling**: `GetDataUsingDataContract` must never accept a `null` value for the `composite` parameter; doing so results in an `ArgumentNullException`. - **Data Contract Integrity**: `CompositeType` properties (`BoolValue`, `StringValue`) are always serialized as part of the data contract due to `[DataMember]` attributes. - **Default State**: A newly instantiated `CompositeType` will always have `BoolValue = true` and `StringValue = "Hello "`. - **Modification Rule**: `GetDataUsingDataContract` only modifies `StringValue` when `BoolValue` is `true`. The original object is mutated and returned (not a copy). --- ## 4. Dependencies ### This module depends on: - `System` (for `ArgumentNullException`, basic types) - `System.Collections.Generic` (imported but not utilized in current code) - `System.Linq` (imported but not utilized in current code) - `System.Runtime.Serialization` (for `[DataContract]`, `[DataMember]` attributes) - `System.ServiceModel` (for `[ServiceContract]`, `[OperationContract]` attributes) - `System.Text` (imported but not utilized in current code) ### What depends on this module: - Cannot be determined from source alone. Consumers would be any WCF client or service host that references this service contract. --- ## 5. Gotchas - **Mutation Side Effect**: `GetDataUsingDataContract` mutates the input `CompositeType` object in place rather than returning a new instance. Callers passing shared references will see the modified state persist. - **Unused Imports**: The files import `System.Collections.Generic`, `System.Linq`, and `System.Text` but do not use them—likely artifact from Visual Studio template generation. - **Template Artifact Comments**: Both files contain comments referencing "Service1" and "IService1" (e.g., "Rename command on the Refactor menu"), indicating this code was generated from a Visual Studio WCF Service Library template and may not have been fully customized. - **TODO Placeholder**: The interface contains a `// TODO: Add your service operations here` comment, suggesting the service is intended for extension but may be incomplete.