有没有办法防止扩展方法同时出现在派生类型和基类型中,并将它们限制在基类型中?
我的情况有点特殊,但长话短说,我有一个场景,从基础实体转换为派生实体是安全的,从派生实体列表转换为基础列表也是安全的实体或反之亦然。由于这些转换通常是不安全的,因此我提供了扩展方法来进行转换,以便使用我的库的开发人员不必记住哪些转换是安全的,哪些不安全。
ToDerivedEntity 扩展方法是相对于 BaseEntity 实现的,虽然在 DerivedEntity 上调用 ToDerivedEntity 并没有什么坏处,但从可用性的角度来看,如果我可以阻止 ToDerivedEntity 出现在 DerivedEntity 上并仅限制它,那就太好了到 BaseEntity。
public class BaseEntity
{
}
public class DerivedEntity : BaseEntity
{
}
static class ExtensionMethods
{
// Should only show up on BaseEntity.
public static ToDerivedEntity(this BaseEntity source)
{
return (DerivedEntity)source;
}
}