派生型と基本型の両方に拡張メソッドが表示されないようにし、それらを基本型のみに制限する方法はありますか?
私の状況は少し特殊なケースですが、簡単に言えば、ベースエンティティから派生エンティティに安全にキャストでき、派生エンティティのリストからベースのリストに安全にキャストできるシナリオがあります。エンティティまたはその逆。これらのキャストは通常安全ではないため、ライブラリを使用する開発者が安全なキャストとそうでないキャストを覚えておく必要がないように、キャストを実行するための拡張メソッドを提供しています。
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;
}
}