我想根據對象的類型生成一個名稱。在我的系統,我有,使用泛型的名稱生成器
class Employee {}
Class ContractEmp:Employee{}
class Manager:Employee{}
我想生成的名字看起來像ContractEmp1其中1將來自增量。我正在嘗試使用泛型。
任何幫助
謝謝
我想根據對象的類型生成一個名稱。在我的系統,我有,使用泛型的名稱生成器
class Employee {}
Class ContractEmp:Employee{}
class Manager:Employee{}
我想生成的名字看起來像ContractEmp1其中1將來自增量。我正在嘗試使用泛型。
任何幫助
謝謝
有了你可以做這樣的事情的擴展方法:
public static class NameExtension
{
private static Dictionary<string, int> counters = new Dictionary<string, int>();
public static string MakeUpName<T>(this T @object)
{
var t = typeof(T);
if (! counters.ContainsKey(t.FullName))
counters[t.FullName] = 0;
return t.Name + counters[t.FullName]++;
}
}
測試:
[TestFixture]
class NameTest
{
[Test]
public void test()
{
Console.WriteLine(new NameTest().MakeUpName());
Console.WriteLine(new NameTest().MakeUpName());
Console.WriteLine(new NameTest().MakeUpName());
Console.WriteLine(new NameTest().MakeUpName());
}
}
輸出:
NameTest0
NameTest1
NameTest2
NameTest3
您可以在其中得到每個構造函數調用遞增Employee類使用私有靜態詮釋。將此數字與typeof(this).Name值組合,可以按照描述生成名稱。請注意,櫃檯將計入所有員工擴展班級,所以如果您想爲每個員工擴展班級連續列出數字,則應爲每個擴展班級實施特定的計數器。此外,每次應用程序重新啓動時,計數器都將設置爲零。
public Class ContractEmp:Employee{
private static int counter = 1;
private String name = "";
public ContractEmp() {
name = typeof(this).Name + counter++;
}
}
像這樣的東西應該工作!
你爲什麼試圖用泛型來做這樣的事情? – Oded
泛型,因爲這段代碼對於所有類型都是相同的。 – Harsha