0

オブジェクトのタイプに基づいて名前を生成しようとしています。私のシステムでは、

class Employee {}

Class ContractEmp:Employee{}

class Manager:Employee{}

私は ContractEmp1 のような名前を生成しようとしています 1 はインクリメンタから来ます。ジェネリックを使用しようとしています。

任意のヘルプ

ありがとうございました、

4

3 に答える 3

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

于 2012-09-24T11:28:45.833 に答える
0
public Class ContractEmp:Employee{
    private static int counter = 1;
    private String name = "";

    public ContractEmp() {
      name = typeof(this).Name + counter++;
    }
}

このようなものがうまくいくはずです!

于 2012-09-24T10:41:37.050 に答える
0

各コンストラクター呼び出しでインクリメントされる Employee クラスでプライベート静的 int を使用できます。この数値を typeof(this).Name 値と組み合わせて、説明されている名前を生成できます。カウンターはすべての従業員拡張クラスに対してカウントされるため、各従業員拡張クラスの連続した番号のリストが必要な場合は、拡張クラスごとに特定のカウンターを実装する必要があることに注意してください。また、アプリケーションが再起動するたびにカウンターがゼロに設定されます。

于 2012-09-24T10:37:28.623 に答える