2011-02-10 31 views
15
有效

可能重複:
Specify required base class for .NET attribute targets如何使.NET屬性只在某些類型

我希望指定我的自定義屬性只對某些類型的有效的(基於接口或基類)。
像這樣:

attributes

我怎麼能這樣做?

+0

糾正我,如果我錯了:你想有一個`FooAttribute`,當應用於其他東西,而不是從`Fooable`派生的類型,將無法編譯(或至少產生一個警告)。 – 2011-02-10 16:35:39

+0

@Adam Robinson:是的,現在我看到問題是重複的,但給出的答案並不適合我 - >我應該指定屬性和限制基類(或接口)在不同的程序集中,所以將屬性實現爲嵌套類是不實際的。 – TDaver 2011-02-10 16:45:14

+0

給出的答案是實現你所談論的唯一方法。除此之外,這是不可能的。 – 2011-02-10 16:48:25

回答

12

這聽起來像你想創建一個Attribute只能在適用於特定類型很多AttributeUsage只能應用於從Attribute派生的類型。簡單地介紹這種自定義限制是不可能的。你看到的特定錯誤不是由於自定義限制,而是因爲它很難連接到編譯器本身。

2

我不認爲你可以,你只能指定屬性的哪種語言元素是有效的。 AttributeUsageAttribute是一個特例,因爲編譯器是意識到這一點,並沒有讓你運用它的東西,不是一個屬性