diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClientBuilder.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClientBuilder.cs
new file mode 100644
index 00000000..f33dc6a1
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/WechatWorkClientBuilder.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using System.Net.Http;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work
+{
+ ///
+ /// 用于构造 实例的构造器。
+ ///
+ public partial class WechatWorkClientBuilder : ICommonClientBuilder
+ {
+ private readonly WechatWorkClientOptions _options;
+ private readonly IList> _configures;
+ private readonly IList _interceptors;
+ private HttpClient? _httpClient;
+ private bool? _disposeClient;
+
+ private WechatWorkClientBuilder(WechatWorkClientOptions options)
+ {
+ _options = options;
+ _configures = new List>();
+ _interceptors = new List();
+ }
+
+ ICommonClientBuilder ICommonClientBuilder.ConfigureSettings(Action configure)
+ {
+ return ConfigureSettings(configure);
+ }
+
+ ICommonClientBuilder ICommonClientBuilder.UseInterceptor(HttpInterceptor interceptor)
+ {
+ return UseInterceptor(interceptor);
+ }
+
+ ICommonClientBuilder ICommonClientBuilder.UseHttpClient(HttpClient httpClient, bool disposeClient)
+ {
+ return UseHttpClient(httpClient, disposeClient);
+ }
+
+ public WechatWorkClientBuilder ConfigureSettings(Action configure)
+ {
+ if (configure is null) throw new ArgumentNullException(nameof(configure));
+
+ _configures.Add(configure);
+ return this;
+ }
+
+ public WechatWorkClientBuilder UseInterceptor(HttpInterceptor interceptor)
+ {
+ if (interceptor is null) throw new ArgumentNullException(nameof(interceptor));
+
+ _interceptors.Add(interceptor);
+ return this;
+ }
+
+ public WechatWorkClientBuilder UseHttpClient(HttpClient httpClient, bool disposeClient = true)
+ {
+ if (httpClient is null) throw new ArgumentNullException(nameof(httpClient));
+
+ _httpClient = httpClient;
+ _disposeClient = disposeClient;
+ return this;
+ }
+
+ public WechatWorkClient Build()
+ {
+ WechatWorkClient client = _disposeClient.HasValue
+ ? new WechatWorkClient(_options, _httpClient, _disposeClient.Value)
+ : new WechatWorkClient(_options, _httpClient);
+
+ foreach (Action configure in _configures)
+ {
+ client.Configure(configure);
+ }
+
+ foreach (HttpInterceptor interceptor in _interceptors)
+ {
+ client.Interceptors.Add(interceptor);
+ }
+
+ return client;
+ }
+ }
+
+ partial class WechatWorkClientBuilder
+ {
+ public static WechatWorkClientBuilder Create(WechatWorkClientOptions options)
+ {
+ if (options is null) throw new ArgumentNullException(nameof(options));
+
+ return new WechatWorkClientBuilder(options);
+ }
+ }
+}