私はベース(抽象)クラスComponent
を持っています。私は誰もが読み取りアクセスを取得するような派生クラスのプロパティへのアクセスを制御したいが、書き込みアクセスは特定のクラスでのみ許可されています。異なるクラスのプロパティへのアクセスが異なる
これらの「特定のクラス」は、現在、抽象基本クラスMessageHandler<TMessage>
を実装するものです。理想的には、IMessageHandler
を実装するクラスもアクセスできるようにしたいと思っていますが、それは要件が少し難しくなると思います。
これはxbox上で実行されるので、一時的なオブジェクト(読み取り専用コピーなど)を作成しないようにします。私はまた、読み込み/書き込みの値を取得するメソッド呼び出しの数を最小限にしたい。
Component
クラスとMessageHandler<TMessage>
クラスは現在独自のアセンブリに属しています。これらのクラスはいずれも、自分のAPIを使用するときに他のプロジェクトによって参照されます。
私は何とか私のモデルを変更しなければならないと思っていますが、私はそれの周りに頭を上げることはできません。
public abstract class Component
{
}
public class DerivedComponentA : Component
{
int property {get; set;}
}
public abstract class MessageHandler<TMessage>
{
}
public class IntMsghandler : MessageHandler<int>
{
void DoThing(DerivedComponentA derivedComponentA)
{
derivedComponentA.property = 5; // Allowed
}
}
public class AnyClass // Doesn't inherit MessageHandler, or implement IMessageHandler
{
void DoThing(DerivedComponentA derivedComponentA)
{
derivedComponentA.property = 5; // Not Allowed
}
}
不明な点がある場合はお知らせください。編集します。 –
あなたがアクセスを制限したいのは明確ではありません。アクセスを制限したいプロパティはどこにありますか? –
@Matten:それは違法です。オーバーライドされたメンバーのアクセス修飾子は変更できません。 –