我有一個小任務,我必須復習類和屬性的基礎知識。在這段代碼的背景關系中,我試圖弄清楚如何列印存盤在串列中的每個任務的所有屬性。
這是代碼。注釋掉的代碼是我迄今為止嘗試列印存盤在 TaskList 中的每個任務的所有屬性的代碼。
namespace FunProject
{
internal class Program
{
static void Main(string[] args)
{
var person1 = new Person
{
FirstName = "Mister",
LastName = "Programmer",
Age = 26
};
Console.WriteLine(person1.FullName());
var Task1 = new Task
{
TaskName = "read",
Description = "gain knowledge",
Id = 1,
IsDone = true
};
var Task2 = new Task
{
TaskName = "eat",
Description = "gain sustenance",
Id = 2,
IsDone = false
};
person1.TaskList = new List<Task>();
person1.TaskList.Add(Task1);
person1.TaskList.Add(Task2);
//Person1.TaskList.ForEach(i => Console.Write("{0}\t", i));
//Person1.TaskList.ForEach (x => Console.WriteLine(x));
//Console.WriteLine(String.Join("{0}\t", Person1.TaskList.ToString()));
//foreach (Task t in Person1.TaskList)
//{
// Console.WriteLine(t);
//}
Console.Read();
}
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set;}
public int Age { get; set; }
public List<Task>TaskList { get; set; }
public string FullName()
{
return ($"{FirstName} {LastName}");
}
}
public class Task
{
public int Id { get; set; }
public string TaskName { get; set;}
public string Description { get; set; }
public bool ?IsDone { get; set;}
}
}
輸出應該是這樣的:
Mister Programmer
Current Tasks:
TaskName: read
TaskDescription: gain knowledge
Id: 1
IsDone: true
TaskName: eat
TaskDescription: gain sustenance
Id: 2
IsDone: false
uj5u.com熱心網友回復:
如果你想解決這個問題,我首先要做的是,我將創建類似這樣的任務串列:
var list = new List<Task>();
list.Add(Task1);
list.Add(Task2);
然后我會將此串列添加到您正在創建的人中
var person1 = new Person
{
FirstName = "Mister",
LastName = "Programmer",
Age = 26,
TaskList = list
};
所以現在你有了一個擁有任務串列的人。這是您需要為輸出創建的所有內容。
因此,對于輸出,您需要像這樣格式化:
Console.WriteLine(person1.FirstName " " person1.LastName);
Console.WriteLine("Current Tasks:");
person1.TaskList.ForEach(x => Console.WriteLine("TaskName:" " "
x.TaskName "\n" "TaskDescription:" " " x.Description "\n" "Id:" " " x.Id "\n" "IsDone:" " " x.IsDone.ToString().ToLower()));
Console.Read();
但是,如果您想擁有屬性名稱而不在 Console.WriteLine("TaskDescription") 等中寫入屬性,則需要使用 System.Reflection:
Type t = typeof(Person);
PropertyInfo[] properties = t.GetProperties();
foreach (PropertyInfo prop in properties)
{
Console.WriteLine(prop.Name);
if (prop.Name.Equals("TaskList"))
{
Type ts = typeof(Task);
PropertyInfo[] propertiesTask = ts.GetProperties();
foreach (var propTask in propertiesTask)
{
Console.WriteLine(propTask.Name);
}
}
}
uj5u.com熱心網友回復:
我會為此使用System.Reflection ...
foreach (var t in person1.TaskList)
{
foreach (var prop in t.GetType().GetProperties())
{
Console.WriteLine($"{prop.Name}: {prop.GetValue(t, null).ToString()}");
}
Console.WriteLine("\n");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/525944.html
標籤:C#班级特性
上一篇:類和無狀態小部件
