我有一个基类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();
返回“SubModel”。这可能吗?
感谢。
答案 0 :(得分:8)
你可以这样做:
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"