79 lines
4.5 KiB
Markdown
79 lines
4.5 KiB
Markdown
|
|
---
|
||
|
|
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.
|