我正在尝试访问以前在Book Class中初始化,然后传递到MyList的通用类信息。
此外,当MyList在构造函数中使用book对象时,实际上发生了什么? 这是代码。
class Book
{
public int id;
public string name;
public Book(int in_id, string in_name)
{
this.id = in_id;
this.name = in_name;
}
}
class MyList<T>
{
public MyList(T _obj)
{
//How to acomplish this
//Console.WriteLine(_obj.id);
}
}
class Program
{
static void Main(string[] args)
{
Book book1 = new Book(1, "Data Structures");
MyList<Book> val1 = new MyList<Book>(book1);
Console.ReadKey();
}
}
答案 0 :(得分:0)
您无法打印这本书的ID,因为通用T对此一无所知。您可以使用基类(抽象类)作为实体类(例如Book)的基础。将普通成员放入其中,例如。 ID。由于id包含在基类中,因此请删除Book类中的一个。然后让Book从基类继承。现在将通用MyList限制为仅接受MyBase(包括所有继承的类型)。由于MyList限于MyBase,因此它现在知道T是MyBase,并且可以访问id字段,因为id是在MyBase中声明的。
iframe
我不确定您要实现什么目标,因为.Net中有一个abstract class MyBase
{
public int id;
}
class Book : MyBase
{
public string name;
public Book(int in_id, string in_name)
{
this.id = in_id;
this.name = in_name;
}
}
class MyList<T> where T : MyBase
{
public MyList(T _obj)
{
Console.WriteLine(_obj.id);
}
}
可以用作通用列表。