C# 如何识别对父函数的对象调用

C# 如何识别对父函数的对象调用,c#,asp.net,C#,Asp.net,我想按子类识别对父类成员的调用。 可能吗? 例如: 我们如何相应地修改getvalue()? //不使用覆盖概念您可以使用反射来执行此操作: string type = objb.GetType().Name; //will be "B" 您可以使用反射来执行此操作: string type = objb.GetType().Name; //will be "B" 解决方案是使用多态性(“重写”)。你能解释一下为什么你明确要求“不使用覆盖概念”的解决方案,而这正是你应该做的吗?我想知道我们是

我想按子类识别对父类成员的调用。 可能吗? 例如:

我们如何相应地修改getvalue()?
//不使用覆盖概念

您可以使用反射来执行此操作:

string type = objb.GetType().Name; //will be "B"

您可以使用反射来执行此操作:

string type = objb.GetType().Name; //will be "B"

解决方案是使用多态性(“重写”)。你能解释一下为什么你明确要求“不使用覆盖概念”的解决方案,而这正是你应该做的吗?我想知道我们是否能识别对父成员的子调用。这很好。。。貌似可以允许第三方实现他们自己的子类,并且不能作弊(让他们的
D
返回
A
),但是你真的应该直接检查他们的类型,而不是他们的“名称”,因为这也会被欺骗。编辑:根据你的评论Anjana,仍然不确定你想做什么;您的意思是识别来自父成员的调用,而不是来自子类对象的调用吗?是的,Chris先生用于识别来自子类对象的调用。解决方案是使用多态性(“重写”)。你能解释一下为什么你明确要求“不使用覆盖概念”的解决方案,而这正是你应该做的吗?我想知道我们是否能识别对父成员的子调用。这很好。。。貌似可以允许第三方实现他们自己的子类,并且不能作弊(让他们的
D
返回
A
),但是你真的应该直接检查他们的类型,而不是他们的“名称”,因为这也会被欺骗。编辑:根据你的评论Anjana,仍然不确定你想做什么;你的意思是识别来自父成员的调用,而不是来自子类对象的调用吗?是的,Chris先生用于识别来自子类对象的调用。根据我的阅读,OP希望在
getvalue
方法中实现这一点,而不是在callsite中实现,不是吗?@KirkWoll根据我的阅读,他认为他需要该方法来实现这一点,但他没有。在任何情况下,您都可以在基类方法的实现中使用
GetType
,它将在运行时返回实例的实际类型,而不是定义该方法的类型。但是我们如何在基类中使用该对象呢?如果我需要从基类中标识这个“名称”,该怎么办?i、 e在getvalue()函数实现中吗?@Anjana只要使用它,它就会工作。无论调用在哪里,它都将始终表示对象实例的最派生类型的名称。根据我的阅读,OP希望在
getvalue
方法中实现,而不是在调用站点,不是吗?@KirkWoll根据我的阅读,他认为他需要该方法来实现,但他没有。在任何情况下,您都可以在基类方法的实现中使用
GetType
,它将在运行时返回实例的实际类型,而不是定义该方法的类型。但是我们如何在基类中使用该对象呢?如果我需要从基类中标识这个“名称”,该怎么办?i、 e在getvalue()函数实现中吗?@Anjana只要使用它,它就会工作。无论在何处调用,它始终表示对象实例的最派生类型的名称。