C# 如何继承泛型类

C# 如何继承泛型类,c#,nested-class,generics,C#,Nested Class,Generics,在C#上工作。我想继承泛型类。为此,我编写了下面的语法 public class Father { public string FatherName { get; set; } } public class Mother { public string MotherName { get; set; } } public class Ancestors<T, U> { //pu

在C#上工作。我想继承泛型类。为此,我编写了下面的语法

 public class Father
    {
        public string FatherName { get; set; }
    }
    public class Mother
    {
        public string MotherName { get; set; }
    }

    public class Ancestors<T, U> 
    {
        //public class Bar
        //{
        //    private T t;
        //    private U u;
        //}
    }


    class Program : Ancestors<Father, Mother>
    {
        static void Main(string[] args)
        {
            Ansestors.Father.FatherName = "xxx";
        }
    }
公共类父
{
公共字符串父名称{get;set;}
}
公共阶级母亲
{
公共字符串名称{get;set;}
}
公共阶级祖先
{
//公共类酒吧
//{
//私人T;
//私立大学;
//}
}
课程名称:祖先
{
静态void Main(字符串[]参数)
{
Ansestors.Father.FatherName=“xxx”;
}
}
我想要Ansestors.Father.FatherName=“xxx”;属性。我的语法有什么问题吗?请展示一些语法来解决这个问题。如果有任何疑问,请提问。提前谢谢

  • 您不应该继承程序类,这是应用程序的入口点
  • 只需创建一个
    Ansestors
    类的实例,我稍微引用了祖先类,如下所示:
  • 公共接口IAncestor
    {
    字符串名称{get;set;}
    }
    公开盖章的班级父亲:Ianestor
    {
    }
    公开盖章的班级母亲:Ianestor
    {
    }
    公共密封类ParentsAncestor
    其中T:IAncestor
    你在哪里
    {
    公共家长(T父亲,U母亲)
    {
    这个。父亲=父亲;
    这个。母亲=母亲;
    }
    公共T父{get;私有集;}
    公共U母{get;私有集;}
    }
    静态void Main(字符串[]参数)
    {
    var instance=newparentsancestor(新父亲(),新母亲());
    instance.Father.Name=“父名”;
    }
    
    您将公共属性放在祖先类中,将特定属性放在父类的父类的母类中。 我不明白你为什么需要泛型


    顺便说一句,程序类继承祖先是没有意义的…

    看起来您还没有完全理解泛型类的概念

    使用上述声明对编译器说的是:每当您在
    程序
    类的代码中找到一个T(或U),然后用
    父类
    (或
    母类
    )替换它

    为什么希望
    程序
    类具有类型为
    父类
    的嵌套对象?它没有在任何地方声明,您所声明的只是编译器的类型解析指令


    “祖先”是正确的拼写-在你陷入错误的拼写之前,你可能想改变这一点,就像我们使用referer一样。我认为你没有正确的泛型概念…@Dan:他们可能已经被“plz”卡住了,不幸的是……这是一种不同寻常的进化观。这是什么宗教信仰?可能是BoltClock是对的,我没有正确的泛型概念。任何人能告诉我为什么我的上述语法不起作用吗?这不是一个真正的问题,但可变名称不应该是那些,因为如果他们使用
    Ansestor会产生误导@Ash Burlaczenko:观察得好!我认为它们可以抽象为第一个祖先和第二个祖先,但这取决于使用cass的上下文。这样,使用泛型就没有太大的灵活性,你可以完全摆脱它们,只公开父/母项目,您需要泛型类型类参数,当您在一组具体实现类中共享一些常见行为时Homas Weller您是对的,我想在程序类上继承两个对象。我现在C#不支持类的多重继承,但我需要继承这两个类,从你的帖子中我不明白为什么一个类不能继承泛型类。请你详细告诉我或者给我展示一些语法。谢谢你的回复。当然你可以继承泛型类,这不是问题。但是从泛型继承的是纯粹的类型声明,而不是对象。您心目中的多重继承似乎与泛型无关。您将需要某种对象组合。C#中的继承不适用于这些事情(感谢上帝!)。看起来你应该考虑一些软件设计原则。。。
    
    class Program
    {
        static void Main(string[] args)
        {
            //original parents
            Father father = new Father("George");
            Mother mother = new Mother("Mary");
    
            //mothers parents aka grandparents
            mother.Mother = new Mother("Ana");
            mother.Father = new Father("Jack");
        }
    }
    
    abstract class Ancestor
    {
        public String Name { get; set; }
    }
    
    public class Father : Ancestor {
        public Mother Mother { get; set; }
        public Father Father { get; set; }
    
        public Father(String name)
        {
            base.Name = name;
        }
    }
    public class Mother : Ancestor {
        public Mother Mother { get; set; }
        public Father Father { get; set; }
    
        public Mother(String name)
        {
            base.Name = name;
        }
    }