私はクラスのプロパティとクラス自体に適用されるカスタム属性を持っています。私のカスタム属性を適用する必要があるすべてのクラスは、単一の基本クラスから派生しました。それが私の基本クラスから派生しなければなりませんのみのクラスに適用することができるように、私は私のカスタム属性を制限することができますどのようにC#の特定の型にのみ適用できるようにカスタム属性を制限しますか?
?これはどうすればいいですか?
abstract class MyBase {
[AttributeUsage(AttributeTargets.Property)]
protected sealed class SpecialAttribute : Attribute {}
}
class ShouldBeValid : MyBase {
[Special]
public int Foo { get; set; }
}
class ShouldBeInvalid {
[Special] // type or namespace not found
[MyBase.Special] // inaccessible due to protection level
public int Bar{ get; set; }
}
(オリジナルの答え:私は自分自身が間違っていることを証明するとき
あなたは(それが自動的に行われるように)それを強制たり(それは他のタイプに適用することができないので)それを制限したいですか? –
ベースクラスから派生したもの以外の型には適用できないように制限したいと思います。 –
編集:まあ、私はそれを行う方法を見つけることによって自分自身を矛盾したと思う!私のための新しいもの... –