加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 获取派生类型类

发布时间:2020-12-16 01:26:34 所属栏目:百科 来源:网络整理
导读:所以,我有以下结构: public abstract class MyBase{ public Type TargetType { get; protected set; }}public class A : MyBase{ public A() { TargetType = GetType();//Wrong,I need B class type not C }}public class B : A{ public B() { }}public cla
所以,我有以下结构:

public abstract class MyBase
{
    public Type TargetType { get; protected set; }
}

public class A : MyBase
{
    public A()
    {
        TargetType = GetType();//Wrong,I need B class type not C
    }
}

public class B : A
{
    public B() { }
}

public class C : B
{
    public C() { }
}

当然,我可以这样接收我的类型:

public class B : A
{
    public B()
    {
        TargetType = typeof(B);
    }
}

实际上,我必须编写一些代码来使示例更清晰:

将Class1.cs

public static Dictionary<Type,Type> MyTypes = new Dictionary<Type,Type>()
{
    { typeof(B),typeof(BView) }
}

public Class1()
{
    C itemC = new C();
    Class2.Initialize(itemC);
}

Class2.cs

public static Initialize(MyBase myBase)
{
    Type t;
    Class1.MyTypes.TryGetValue(myBase.TargetType,out t);
    //I need get BView but I get null because *myBase.TargetType* is C class type
}

等级结构:

> 0级:(MyBase) – 1个对象
> 1级:(A) – 2个物体
> 2级:(B) – 100个物体以上
> 3级:(C) – 80个物体等等

我把这个案子放在括号里

我将不胜感激任何帮助

解决方法

在对象的任何实例上,您可以调用.GetType()来获取该对象的类型.

您无需在构造上设置类型

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读