2012-04-16 9 views
2

私はいくつかのプロパティを持つクラスを持っていますが、そのうちの1つはオブジェクトです。それをExtraDataとしましょう。これは、3つの異なるタイプのいずれかのオブジェクトであり、3つのフィールドの間に共有フィールドはありません。マーカーインターフェイスを使用する必要がありますか?

3つのオブジェクトクラスが実装するマーカーインターフェイスを作成し、ExtraDataプロパティをそのインターフェイスタイプにする必要がありますか?私が読んだことはすべて、.NETでこれを避け、可能であればカスタム属性を使用することです。私がこれを行うと、ExtraDataを単純なObjectにし、属性をチェックして型を決定しますか?このデータを使用して属性をチェックし、それに応じてキャストしたい場合、これは余分な作業のようです。

「マーカーインタフェースを使用しない」ルールの例外ですか?または私は何か明白な行方不明ですか?

ありがとうございました。

+0

マーカーインターフェイスは、実際にデータを使用するために、多数のタイプチェックとキャストを意味しますが、そうではありませんか?過去に私は 'object'を使い、カスタムの密閉クラスを内部に置いていました。そして、それを使用したいコードは、単に与えられたタイプをチェックすることができます。チェックとキャストは1つだけで十分です。 –

答えて

1

あなたの意図が本当に明確ではありません。あなたの実際の質問に答えるために、そのようなインターフェイスを使用することは完全に受け入れられ、アプローチの知恵を無視して、プロパティの価値を少数のタイプに制限する必要がある場合、それは正当なアプローチのようです。

実際には、より良いアプローチがあるかもしれませんが、何をしているのかについての情報がなければ何も示唆することはできません。