POCO = Plain Old CLR/CSharp Object
直译就是"普通的、旧式的 C# 对象"。
对比一下就清楚了:
| POCO | 非 POCO | |
|---|---|---|
| 继承 | 不继承任何框架类 | 继承 EntityObject、DataRecord 等 |
| 特性 | 不带任何 ORM/序列化特性 | [DataContract]、[JsonProperty] 满天飞 |
| 依赖 | 独立,不引用任何外部程序集 | 依赖 EF、NHibernate、Dapper 等 |
| 本质 | 就是一个普通的类,用来装数据 | 被框架绑架的"数据容器" |
// ✅ POCO ------ 就是普通 C# 类
public class ResilienceOptions
{
public bool EnableResilience { get; set; } = true;
public int RetryCount { get; set; } = 3;
}
// ❌ 非 POCO ------ 被框架绑架
public class Product : EntityObject // 依赖 EF
{
[Key]
public int Id { get; set; }
}
所以"ResilienceOptions 使用 POCO + IOptions 模式"的意思就是:它就是一个普普通通的配置类,不绑定任何 ORM 或框架,用 Microsoft.Extensions.Options 来绑定配置,两边都干净。