ここでは、マーカーインターフェイスを回避する方法の例を示します。辞書のカスタム属性のマーカーインターフェイスを回避するには?
public class AssignableAttribute : Attribute { }
[Assignable]
public class Foo
{
...
}
[Assignable]
public class Bar
{
...
}
これを辞書に追加しようとしていますが、どうしてこのような辞書をコード化できないのですか?
Dictionary<string, AssignableAttribute> dictionary = new ...();
dictionary.Add("foo", new Foo());
dictionary.Add("bar", new Bar());
マーカーインターフェース(無メンバーとのインタフェース)を使用しないでください。
カスタム属性は、タイプをマークする方法を提供します。カスタム属性についての詳細は、 を参照してください。カスタム属性の記述を参照してください。カスタム 属性は、コードが実行されるまで属性 のチェックを延期できる場合に優先されます。シナリオにコンパイル時に のチェックが必要な場合、このガイドラインを遵守することはできません。
http://msdn.microsoft.com/en-us/library/ms229022.aspx
あなたはあるタイプの要素の辞書を宣言し、別の無関係なタイプの要素を追加しても動作しません。あなたの例から明らかではないので、達成しようとしていることの説明を記入してください。 –
もう少しコードを追加しました。 – Darf
@Darf:これはまだ解決しようとしている問題の説明ではありません。これはちょうどあなたがそれを解決しようとしている方法を示しています - そしてその方法はうまくいきません。 – ChrisWue