2009-07-09 38 views
31

Trong C#, làm thế nào để có được một tham chiếu đến lớp cơ sở của một lớp nhất định? Ví dụ:C#: làm thế nào để bạn có được một lớp cơ sở của lớp?

Ví dụ: giả sử bạn có một lớp nhất định, MyClass và bạn muốn lấy tham chiếu đến lớp con của MyClass.

tôi có trong tâm trí một cái gì đó như thế này:

Type superClass = MyClass.GetBase() ; 
// then, do something with superClass 

Tuy nhiên, dường không có GetBase phương pháp thích hợp.

Trả lời

44

Sử dụng phản ánh từ loại của lớp hiện tại.

Type superClass = myClass.GetType().BaseType; 
20
Type superClass = typeof(MyClass).BaseType; 

Ngoài ra, nếu bạn không biết loại đối tượng hiện tại của bạn, bạn có thể nhận được đó là loại sử dụng GetType và sau đó nhận được BaseType loại rằng:

Type superClass = myObject.GetType().BaseType; 

documentation

2

Tài sản Type.BaseType là những gì bạn đang tìm kiếm.

Type superClass = typeof(MyClass).BaseType; 
-1

bạn chỉ có thể sử dụng cơ sở.

5

này sẽ nhận được các loại cơ sở (nếu nó tồn tại) và tạo ra một thể hiện của nó:

Type baseType = typeof(MyClass).BaseType; 
object o = null; 
if(baseType != null) { 
    o = Activator.CreateInstance(baseType); 
} 

Ngoài ra, nếu bạn không biết loại tại thời gian biên dịch sử dụng như sau:

object myObject; 
Type baseType = myObject.GetType().BaseType; 
object o = null; 
if(baseType != null) { 
    o = Activator.CreateInstance(baseType); 
} 

Xem Type.BaseTypeActivator.CreateInstance trên MSDN.

2

obj.base sẽ giúp bạn tham chiếu đến đối tượng mẹ từ một đối tượng của đối tượng có nguồn gốc obj.

typeof (obj) .BaseType sẽ giúp bạn có một tham chiếu đến loại đối tượng phụ huynh từ một thể hiện của đối tượng có nguồn gốc obj.

+0

'base' và' this' chỉ có sẵn trong các phương pháp dụ. –

Các vấn đề liên quan