オブジェクトのタイプに基づいて名前を生成しようとしています。私のシステムでは、
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
public Class ContractEmp:Employee{
private static int counter = 1;
private String name = "";
public ContractEmp() {
name = typeof(this).Name + counter++;
}
}
このようなものがうまくいくはずです!
各コンストラクター呼び出しでインクリメントされる Employee クラスでプライベート静的 int を使用できます。この数値を typeof(this).Name 値と組み合わせて、説明されている名前を生成できます。カウンターはすべての従業員拡張クラスに対してカウントされるため、各従業員拡張クラスの連続した番号のリストが必要な場合は、拡張クラスごとに特定のカウンターを実装する必要があることに注意してください。また、アプリケーションが再起動するたびにカウンターがゼロに設定されます。