C# 如何继承泛型类
在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
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;
}
}