例:TestA.dll中的部分代码
public class A
{
public virtual void test()
{
}
}
public class C
{
public void call()
{
object obj = GetBO();// 在TestB.dll中根据B反射出来的一个对象,
((A)obj).test();// 这里本来是想调用B中test,但是有时候调B.test,有时调A.test
}
}TestB.dll中的部分代码
public class B:A
{
public override void test()
{
}
}问题:
强制类型转换时如何调用,按理应该调用A.test,但是为什么会有时候调B.test,有时调A.test。
public class A
{
public virtual void test()
{
}
}
public class C
{
public void call()
{
object obj = GetBO();// 在TestB.dll中根据B反射出来的一个对象,
((A)obj).test();// 这里本来是想调用B中test,但是有时候调B.test,有时调A.test
}
}TestB.dll中的部分代码
public class B:A
{
public override void test()
{
}
}问题:
强制类型转换时如何调用,按理应该调用A.test,但是为什么会有时候调B.test,有时调A.test。
关键是你是否确定你构造出来的到底是什么对象?
{
#region 说明
/*
* 功能:获取业务对象
*
* 备注:业务类的构造函数
*
* public xxx( op )
*
*/
#endregion
#region 获取所在类全名
string strClassFullName = "";
strClassFullName = nsEnv.trade.GetClassFullName( oe,No );
if ( IsError() ) return null;
#endregion
Type tTmp;
tTmp = assmServer.GetType(strClassFullName);
Object obj = Activator.CreateInstance(tTmp,new object[] { op }); return obj; }
构造出来的对象真的是B类型的,我采用单步跟踪过去看了的。