把散落在各章的公开方法签名收拢到一页,方便 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 群