abp-settings-featureslisted
Install: claude install-skill burakdmir/abp-skills
# ABP Settings & Features Skill
## Trigger
Settings, ISettingProvider, ISettingManager, setting values, features, IFeatureChecker, feature toggles, feature management.
---
## Settings
### Define
```csharp
public class BookStoreSettingDefinitionProvider : SettingDefinitionProvider
{
public override void Define(ISettingDefinitionContext context)
{
context.Add(
new SettingDefinition("App.UI.LayoutType", defaultValue: "LeftMenu",
displayName: L["LayoutType"], isVisibleToClients: true),
new SettingDefinition("Smtp.Password", defaultValue: "", isEncrypted: true)
);
}
}
```
### Read (ISettingProvider — cached, read-only)
```csharp
string v = await _provider.GetOrNullAsync("Smtp.UserName");
bool ssl = await _provider.GetAsync<bool>("Smtp.EnableSsl");
bool ssl = await _provider.IsTrueAsync("Smtp.EnableSsl");
int port = await _provider.GetAsync<int>("Smtp.Port");
int? port = (await _provider.GetOrNullAsync("Smtp.Port"))?.To<int>();
```
`ApplicationService` has `SettingProvider` property pre-injected.
### Write (ISettingManager — for UIs)
```csharp
await _mgr.SetForCurrentTenantAsync("App.UI.LayoutType", "LeftMenu");
await _mgr.SetForUserAsync(userId, "App.UI.LayoutType", "LeftMenu");
await _mgr.SetGlobalAsync("App.UI.LayoutType", "TopMenu");
string v = await _mgr.GetOrNullGlobalAsync("App.UI.LayoutType");
```
### Fallback Chain (bottom → top)
D (Default) → C (Configurat