API 一览

AddKnown 家族、Config.* 装配门面与常用服务的一页式签名索引。

最后更新

把散落在各章的公开方法签名收拢到一页,方便 Ctrl+F 速查。这里只给签名与一句话职责,参数细节与默认值见配置项 / 属性全表,用法背景见各概念页。

装配入口(AddKnown 家族,命名空间 Known)

services.AddKnown(Action<AppInfo> configure);          // 应用元信息 + 核心服务(UIService/LocalService/IAuthProvider)
services.AddKnownClient(Action<ClientOption> configure); // 客户端:BaseAddress + ServiceProxy<T> + HttpClient
services.AddKnownWeb(Action<ServerOption> configure);    // 服务端:[WebApi]→端点、[Service]→DI、Database
services.AddKnownDesktop(Action<ServerOption> configure);// 桌面:同 AddKnownWeb 内部装配,接口进程内直调
services.UseDatabase(Func<Database, Task> onSeed = null);// 启动一次:建表/增列 + 幂等种子

AddMyApp(AppType) 不是框架 API,而是你在业务程序集里自定义的封装(开源示例叫 AddKnownApp),内部把上面前三步的公共部分收敛成一行。

Config 静态门面(命名空间 Known)

Config.AddModule<T>();                       // T 须非静态 marker;扫 [WebApi]/[Service]/[Table]/[Menu]/[AppMenu]
Config.AddModule(Assembly asm);
Config.AddMenuGroup(string id, string name, string icon = null, int order = 0, string parent = null);
Config.AddTopAction(string id, string name, string icon = null, Type handler = null,
                    string url = null, int order = 0, Type component = null, string roles = null);
Config.AddMenuDecorator(Action<MenuItem> decorator);
Config.AddShell(string key, string name, Type type, string icon = null, int order = 0);   // 可切换外壳候选,同 key 覆盖
Config.App / Config.LayoutType / Config.Shells / Config.AppHomeRoute / Config.Assemblies;  // 属性见全表

Database(命名空间 Known.Data;注入即用)

查询:

db.Query<T>() -> IQueryBuilder<T>   // 流式:.Where(expr).OrderBy(...);.CountAsync() / .FirstAsync<TItem>() / .ToListAsync<TItem>()
Task<T>    QueryAsync<T>(string sql, object param = null);
Task<T>    QueryAsync<T>(Expression<Func<T,bool>> expression);
Task<T>    QueryByIdAsync<T>(string id);
Task<List<T>> QueryListAsync<T>();                 // 及重载 (top) / (sql,param) / (expression) / (top,expression)
Task<List<T>> QueryListByIdAsync<T>(params string[] ids);
Task<DataTable> QueryTableAsync(string sql, object param = null);
Task<PagingResult<T>> QueryPageAsync<T>(PagingCriteria criteria);            // 分页主入口
Task<PagingResult<T>> QueryPageAsync<T>(string sql, PagingCriteria criteria, Type entityType = null);

标量 / 写:

Task<T>       ScalarAsync<T>(string sql, object param = null);
Task<List<T>> ScalarsAsync<T>(string sql, object param = null);
Task<int>     ExecuteAsync(string sql, object param = null);
Task<int>     InsertAsync<T>(T data);
Task<int>     InsertListAsync<T>(List<T> datas);
Task<T>       InsertAsync<T>(T entity, bool newId);     // T : EntityBase
Task          SaveAsync<T>(T entity);                   // T : EntityBase,有则改无则增
Task<int>     SaveEntityAsync<T>(T entity);             // T : BaseEntity
Task<int>     DeleteAsync<T>(T entity | string id | Expression<Func<T,bool>>);
Task<int>     DeleteAllAsync<T>();
Task<Result>  TransactionAsync(string name, Func<Database, Task> action, object data = null);

辅助 / 元:

string  FormatName(string name);   // 标识符按 provider 加引号
object  FormatBoolean(bool value);
bool    CheckConnection();
void    SetDatabase(DatabaseInfo info);   // 切换到指定命名连接
const string Database.DefaultConnName = "Default";
Task<SchemaSyncResult> EnsureSchemaAsync(this IServiceProvider);  // 非破坏性建表/增列:ExecutedSqls / Warnings

参数化 SQL 里 @ 前缀会按 provider 自动转换;多连接用 new Database(option, "connName") 或 SetDatabase。详见数据层。

键值配置扩展(命名空间 Known.Platforms,作用于 Database):

Task<bool>   ExistsConfigAsync(string key);
Task<string> GetConfigAsync(string key);
Task<Result> SaveConfigAsync(string key, string value);   // upsert,天然幂等

ServiceProxy(前后端契约,见 serviceproxy)

ServiceProxy<T> 由 AddKnownClient 经 DispatchProxy 自动生成,消费者只注入 [WebApi] 接口、不直接接触它。要点:仅支持返回 Task / Task<T>;方法名 Get* 且无 class 参 → GET,Save/Create/Update* → POST,Delete/Remove* → DELETE;收到 401 自动跳登录。

UIService(命名空间 Known.Components;经 UI 注入)

// Toast
UI.Error/Success/Info/Warning(string msg);  UI.Exception(Exception ex);  UI.Close(UIMessage m);  UI.Clear();
// 通知
UI.Notify(string title, string description = null, UIMessageType type = Info);
UI.CloseNotification(UINotification n);  UI.ClearNotifications();
// 顶部加载条
UI.ShowLoading();  UI.SetProgress(double v);  UI.Increase(double delta = 10);  await UI.HideLoadingAsync();
// 浮层
UI.ShowModal(ModalModel m);  UI.CloseModal(ModalModel m);  UI.CloseAllModals();
UI.ShowDrawer(DrawerModel m);  UI.CloseDrawer(DrawerModel m);  UI.CloseAllDrawers();
UI.Changed;   // 事件,Container 订阅后统一渲染

LocalService(命名空间 Known.Components;经 Local 注入)

string this[string key];                    // 取当前语言译文,缺译回退 key
string Format(string key, object args);     // {name} 具名占位符,由匿名对象同名属性代入
void   AddTexts(string language, IDictionary<string,string> texts);
Task   InitializeAsync();                   // 从 JS 读主题/语言/密度/色并应用
Task<bool> IsMobileAsync();
Task ToggleThemeAsync();  Task SetThemeAsync(string theme);  Task SetLanguageAsync(string language);
Task ToggleFullscreenAsync();  Task SetDensityAsync(string level);  Task SetColorAsync(string hex);
Task DownloadAsync(string fileName, string content);  Task DownloadAsync(string fileName, byte[] content);
Local.Info;  Local.Changed;                 // 快照 + 变更事件

多语言词条来源与语言包机制见国际化,主题令牌见主题与外观。

IAuthProvider(命名空间 Known;AddKnown 默认注册 AuthProvider)

bool        IsAuthenticated { get; }
Task<UserInfo> GetUserAsync();
Task        SignInAsync(UserInfo user);
Task        SignOutAsync();
List<MenuItem> BuildMenus(UserInfo user);      // 侧边栏
List<MenuItem> BuildAppMenus(UserInfo user);   // 移动端底部 Tab

默认实现 AuthProvider 全成员 virtual:Web 覆写鉴权四件套换成 Cookie(CookieAuthProvider : AuthProvider),菜单装配复用基类。身份模型 UserInfo 与角色过滤见鉴权与身份。

常用枚举与返回

AppType { Web, Desktop };UIMessageType { Info, Success, Warning, Error };DatabaseType { Access, SQLite, SQLServer, Oracle, MySQL, PostgreSQL, DM }。统一返回 Result(判定用 IsValid,非 Success)与分页 PagingCriteria / PagingResult<T>,字段见全表。

微信公众号二维码 扫码关注公众号
QQ 交流群二维码 扫码加入 QQ 群