> This page is for SDK, version Current (default).
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

# .NET 配置

> 使用 Fern 配置您的 C# .NET SDK 生成器。自定义客户端类名、命名空间、错误处理和分页设置。

您可以在 `generators.yml` 中自定义 C#/.NET SDK 生成器的行为：

**`generators.yml`**

```yml {6-7} title="generators.yml"
groups: 
  csharp-sdk:
    generators:
      - name: fern-csharp-sdk
        version: 2.92.8
        config:
          client-class-name: YourApiClient
```

**`base-api-exception-class-name`** `string`

自定义所有特定 API 异常将继承的基础 API 异常类的名称。这允许您定义自定义的基础异常类名，以便更好地与现有的错误处理模式集成。

---

**`base-exception-class-name`** `string`

指定所有生成的异常将继承的基础异常类的名称。这为所有 SDK 异常提供了一个公共的父类，实现一致的异常处理模式。

---

**`client-class-name`** `string`

设置生成的 API 客户端类的名称。这决定了用户在生成的 .NET SDK 中将与之交互的主要客户端类型名称。

---

**`custom-pager-name`** `string`

自定义用于处理分页 API 响应的分页辅助类的名称。这允许您指定符合您命名约定的自定义名称。

---

**`default-timeout-in-seconds`** `number | 'infinity'` — default: 30

网络请求的默认超时时间，以秒为单位。设置为 `infinity` 可禁用默认超时。SDK 用户仍然可以通过传递 `RequestOptions.Timeout` 来[按请求覆盖此设置](/learn/zh/sdks/deep-dives/sdk-user-features#customization-options)。

---

**`enable-forward-compatible-enums`** `boolean`

启用后，生成可以处理未知值的枚举类型。这允许 SDK 处理可能添加到 API 中的新枚举值，而不会破坏现有的客户端代码，提高前向兼容性。

---

**`enable-wire-tests`** `boolean` — default: true

生成[模拟服务器（网络）测试](/learn/zh/sdks/deep-dives/testing#mock-server-tests)以验证 SDK 按预期发送和接收 HTTP 请求。

---

**`environment-class-name`** `string`

指定用于管理不同 API 环境（例如开发、测试、生产）的环境配置类的名称。

---

**`explicit-namespaces`** `boolean`

启用后，在整个 SDK 中生成带有显式命名空间声明的代码。这有助于避免命名冲突并提高大型项目中代码的清晰度。

---

**`exported-client-class-name`** `string`

设置将在代码示例和文档中使用的导出客户端类的名称。这对于自定义客户端在生成的文档中的显示方式很有用。

---

**`generate-error-types`** `boolean`

启用后，为不同的 API 错误生成特定的错误类型类。这提供强类型错误处理，而不是使用通用异常类型。

---

**`generate-mock-server-tests`** `boolean` — default: true

[`enable-wire-tests`](#enable-wire-tests) 的别名，为向后兼容而保留。生成[模拟服务器（网络）测试](/learn/zh/sdks/deep-dives/testing#mock-server-tests)以验证 SDK 按预期发送和接收 HTTP 请求。

---

**`include-exception-handler`** `boolean`

启用后，在生成的 SDK 中包含内置异常处理工具。这为常见的错误处理场景提供便利方法。

---

**`inline-path-parameters`** `boolean`

启用后，路径参数将作为请求对象的属性包含，而不是作为单独的方法参数传递。这创建了一个更统一的请求结构，将所有参数分组在一起。

---

**`maxRetries`** `number`

失败请求的默认重试次数。未设置时，生成的 SDK 使用其自己的内置默认值。SDK 用户仍然可以通过请求选项按请求覆盖此设置。

---

**`namespace`** `string`

指定所有生成的 .NET 代码的根命名空间。这决定了用户在使用 SDK 时将导入的命名空间层次结构。

---

**`offset-semantics`** `'item-index' | 'page-index'`

控制如何为[自动分页](/learn/zh/sdks/deep-dives/auto-pagination)端点解释偏移参数。

* `item-index`: 偏移计算单个项目（例如，偏移 20 跳过前 20 个项目）。
* `page-index`: 偏移计算页面（例如，偏移 3 跳到第 3 页）。

---

**`omit-fern-headers`** `boolean` — default: false

启用后，生成的 SDK 从 HTTP 请求中省略 `X-Fern-Language`、`X-Fern-SDK-Name` 和 `X-Fern-SDK-Version` 标头。

---

**`package-id`** `string`

设置生成的 SDK 的 NuGet 包标识符。这在将 SDK 发布到 NuGet 或其他包仓库时使用。

---

**`read-only-memory-types`** `List<string>`

指定应使用 ReadOnlyMemory\<T> 而不是常规数组或集合生成的类型列表。通过减少内存分配，这可以改善大数据传输的性能。

---

**`redact-response-body-on-error`** `boolean`

启用后，防止原始响应正文泄漏到异常消息和日志中。反序列化错误异常传递 `null` 而不是原始响应正文，基础 API 异常类包含排除响应正文的自定义 `ToString()` 重写。

---

**`root-client-class-access`** `'public' | 'internal'`

控制根客户端类的访问修饰符。使用 'public' 使客户端可从其他程序集访问，或使用 'internal' 将访问限制在同一程序集内。

---

**`root-namespace-for-core-classes`** `boolean`

启用后，将核心 SDK 类（如基础客户端类和工具）放置在根命名空间而不是嵌套命名空间中。这可以简化常用类型的导入。

---

**`use-discriminated-unions`** `boolean`

启用后，为可以包含多种不同对象类型的 API 响应生成区分联合类型。这为多态响应提供类型安全的处理。

---