C#:如何获得一个类? 基类?

发布于 2024-07-26 02:23:28 字数 265 浏览 8 评论 0原文

在 C# 中,如何获取对给定类的基类的引用?

例如,假设您有一个特定的类 MyClass,并且您想要获取对 MyClass 超类的引用。

我想到的是这样的:

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

但是,似乎没有合适的 GetBase 方法。

In C#, how does one obtain a reference to the base class of a given class?

For example, suppose you have a certain class, MyClass, and you want to obtain a reference to MyClass' superclass.

I have in mind something like this:

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

However, it appears there is no suitable GetBase method.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

逆光飞翔i 2024-08-02 02:23:28

使用当前类的类型的反射。

 Type superClass = myClass.GetType().BaseType;

Use Reflection from the Type of the current class.

 Type superClass = myClass.GetType().BaseType;
佼人 2024-08-02 02:23:28
Type superClass = typeof(MyClass).BaseType;

此外,如果您不知道当前对象的类型,可以使用 GetType 获取类型,然后获取该类型的 BaseType:

Type baseClass = myObject.GetType().BaseType;

文档

Type superClass = typeof(MyClass).BaseType;

Additionally, if you don't know the type of your current object, you can get the type using GetType and then get the BaseType of that type:

Type baseClass = myObject.GetType().BaseType;

documentation

星星的軌跡 2024-08-02 02:23:28

这将获取基本类型(如果存在)并创建它的实例:

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

或者,如果您在编译时不知道类型,请使用以下命令:

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

请参阅 Type.BaseTypeActivator.CreateInstance

This will get the base type (if it exists) and create an instance of it:

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

Alternatively, if you don't know the type at compile time use the following:

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

See Type.BaseType and Activator.CreateInstance on MSDN.

素年丶 2024-08-02 02:23:28

如果你想检查一个类是否是另一个类的子类,你可以使用is

if (variable is superclass){ //do stuff }

文档: https://msdn.microsoft.com/en-us/library/scekt9xw .aspx

if you want to check if a class is subclass of another you can use is.

if (variable is superclass){ //do stuff }

Docs: https://msdn.microsoft.com/en-us/library/scekt9xw.aspx

墨落画卷 2024-08-02 02:23:28

Type.BaseType 属性就是您的属性寻找。

Type  superClass = typeof(MyClass).BaseType;

The Type.BaseType property is what you're looking for.

Type  superClass = typeof(MyClass).BaseType;
嘿咻 2024-08-02 02:23:28

obj.base 将从派生对象 obj 的实例中获取对父对象的引用。

typeof(obj).BaseType 将从派生对象 obj 的实例中获取对父对象类型的引用。

obj.base will get you a reference to the parent object from an instance of the derived object obj.

typeof(obj).BaseType will get you a reference to the parent object's type from an instance of the derived object obj.

他夏了夏天 2024-08-02 02:23:28

你可以只使用base。

you can just use base.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文