我正在尝试根据对象的类型生成名称。在我的系统中,我有,
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());
}
}
输出:
名称
测试
0
名称测试1 名称测试2 名称测试3
您可以在 Employee 类中使用私有静态 int,该类在每次构造函数调用时都会递增。将此数字与 typeof(this).Name 值相结合,您可以生成所描述的名称。请注意,计数器将对所有 Employee 扩展类计数,因此如果您想要每个 Employee 扩展类的连续数字列表,则应为每个扩展类实现一个特定的计数器。此外,每次应用程序重新启动时,计数器都将设置为零。
public Class ContractEmp:Employee{
private static int counter = 1;
private String name = "";
public ContractEmp() {
name = typeof(this).Name + counter++;
}
}
像这样的东西应该工作!