私のアプリケーションでは、エンティティの一部がインターフェイスAを実装し、他のインターフェイスはインターフェイスBを実装し、一部はAとBの両方を実装します。 AとBの派生インタフェースを使用するには?派生したインターフェイスを強制的に使用する方法
ここにいくつかの例は次のとおり
インタフェースA
public interface IActive
{
DateTime? StartEffDT { get; set; }
DateTime? EndEffDT { get; set; }
}
インタフェースB
public interface ISecured
{
object SecurityToCheck { get; set; }
}
インタフェースA及びB
public interface IActiveSecured : IActive, ISecured
{
}
方法例
はpublic void ExampleMethod1(IActive x) { }
public void ExampleMethod2(ISecured y) { }
public void ExampleMethod3(IActiveSecured z) { }
ExampleMethod1にIActiveのみを強制的に実行させるが、IActiveSecuredを強制的に実行させる方法はありますか?
public void UpdateItem(IActive item) {
//update the item, if it is currently active
}
IActiveSecuredアイテムでUpdateItemを呼び出そうとした場合、動作します。驚きはない、それは継承がどのように働くかである。しかし、ユーザーがアイテムを更新する権限を持っていることを確認するためにセキュリティをチェックする必要があるため、IActiveSecuredでUpdateItemを呼び出すことはできません。
ありがとうございました!
私はあなたがそのように動作したい場合は、インターフェイスの実装のポイントを逃したと思います。それがインタフェースを実装するならば、そのインタフェースの実装を期待するものはそれを処理できるはずです。派生型かどうかは関係ありません。 – mason
確かにあなたのデザインは少しばかり... "IActiveSecured"はインターフェイスを実装して以来、IActiveとして受け入れられるでしょう...そうでなければ実装してはいけません:) –
私は他のコメント作成者に同意します。 'IActiveSecured'オブジェクトを除いて実装しようとしていることについて何らかの説明をすることができれば、もっと助けてくれるかもしれません。 – krillgar