有一些機制允許一個類只能在C#中被N個類繼承嗎?如何在C#中創建A類,其中A只能由B,C,D繼承?
回答
你可以把它和派生類放在一個單獨的程序集中,並聲明基類的構造函數爲internal
。這樣,雖然你可以在不同的程序集中繼承它,但是你不能實例化任何派生類。
可以使A類abstarct和任意數量的類繼承它..
我認爲在這種情況下,N = 3 – 2011-06-15 04:59:12
@Tom:請參閱由Abatishchev給出的答案,我只是想告訴相同的..我想過提示後,休息提問者可以谷歌... – Stuti 2011-06-15 05:09:25
沒有,但你總是可以做,如果它超過了限制的構造函數拋出異常。
我怎麼知道從A繼承了多少個類? – 2011-06-15 05:02:16
在基類構造函數的散列表中記錄'this'的類型。 – Koterpillar 2011-06-15 05:10:36
// can be inherited only by classes in the same assembly
public abstract class A
{
protected internal A() { }
}
// can't be inherited
public sealed class B : A
{
}
只是我個人的薰陶,我想在閱讀題目是:「哦,非常非常糟糕的主意!有更多的瞭解業務環境,這使得這樣的設計選擇可取的,因爲我的第一個thougt基類從來不應該知道任何事情(更糟糕的是:要規則)它的派生類「。
- 1. 如何寫A :: B :: C => D給定A :: B :: C和(A,B,C)=> D?
- 2. SQL條件:(A = B AND C LIKE%D%)或(A LIKE%B%和C = D)
- 3. 從{a-b,b-c,c-a}改變爲{(a,b),(b,c),(c,a)}?
- 4. 如何標準化範圍[a,b]到[c,d],其中a映射到d,b映射到c
- 5. 對稱字典其中d [a] [b] == d [b] [a]
- 6. 合併路徑與Python,從/ A/B/C + C/d到/ A/B/C/d
- 7. 函數返回類型A,使其類型B(從A繼承)
- 8. {a,b,c,d,e} a,b-> c,a,b-> d和d-> e的最高範式是什麼?
- 9. 簡化布爾表達式(a *'b *'c)+('a *'b * c)+('a * b *'c)+(a *'b * c)
- 10. PHP變換陣列'a','b','c'到'a/b/c','a/b','a'
- 11. 從5,2,20,6,6到B,A,D,C,C
- 12. 如何知道類A是否直接從C#中的類B繼承?
- 13. 對於A,B在C,d的Python
- 14. 如何解析這個JSON數據{「A」:「[[a,b],[c,d]]」}
- 15. 方法B用於方法A;在繼承類中,使A被覆蓋B
- 16. 如果A和B是單子,如何將A [B [C]]轉換爲B [A [C]]?
- 17. 從類A調用類B並繼承類A的屬性?
- 18. C#。如果(a ==(b或c或d))。可能嗎?
- 19. Rails:使用模型has_many B belongs_to C return A其中B屬於C,B最近爲給定的A創建?
- 20. 如果在[a,b,c,d]中出現任何主動傷害`
- 21. C#:無法A型轉換爲B型,其中A = B
- 22. C/C++:A(* eval(A(* function)(B),B b))(){...}可能嗎? (可能預C++ 11)
- 23. Haskell函數組合 - (a - > b) - >(a - > c) - >(b - > c - > d) - >(a - > d)
- 24. a = b || c在Python中
- 25. 爲什麼var c =「a」|| 「b」返回c =「a」和var c =「a」&&「b」返回c =「b」?
- 26. 如何查詢:在類A,B和C
- 27. 在c編程(A^B^C)/(D * E)中插入後綴轉換
- 28. ORMlite QueryBuilder其中A和B和C和(D或E或F)
- 29. 當B類從A類繼承時,它是否必須是「B類是 - A類」?
- 30. 爲條件執行MCDC(A && B && C)|| D
在同一個程序集中是'B','C'和'D'嗎? – 2011-06-15 04:47:20
這是否需要在運行時或編譯時。 – rerun 2011-06-15 04:48:12
是否有特定的理由讓你這樣做?也許一個實際的例子會有幫助。 – Koterpillar 2011-06-15 04:48:36