0

基本クラスの BaseModel と、サブクラスの SubModel があります。クラスの文字列名を返す BaseModel 内の関数を定義したいと考えています。これは BaseClass のインスタンスに対して機能していますが、SubModel インスタンスを作成すると、関数は引き続き「BaseModel」を返します。これがコードですか?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace ClassLibrary1
{
    public class BaseModel
    {
        public string GetModelName()
        {
            return MethodBase.GetCurrentMethod().ReflectedType.Name;
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ClassLibrary1;

namespace ConsoleApplication1
{
    class SubModel : BaseModel
    {

    }
}

そして、私はこの電話を希望します:

SubModel test = new SubModel();
string name = test.GetModelName();

「サブモデル」を返す。これは可能ですか?

ありがとう。

4

1 に答える 1

9

あなたはこれを行うことができます:

public class BaseModel
{
    public string GetModelName()
    {
        return this.GetType().Name;
    }
}

class SubModel : BaseModel
{

}

SubModel test = new SubModel();
string name = test.GetModelName();

これも可能です:

string name = (test as BaseModel).GetModelName();
string name = ((BaseModel)test).GetModelName();

//both return "SubModel"
于 2013-03-07T20:12:03.350 に答える