我用c#winform做了一个程序,在一个公共类里写了一个虚方法,然后又分别在两个类里重写了这个方法。
在程序的两个界面分别调用这个虚方法,这两个界面一个界面是实现一个重写类里的方法,另一个界面调用另一个重写类里的方法该如何实现呢。
在程序的两个界面分别调用这个虚方法,这两个界面一个界面是实现一个重写类里的方法,另一个界面调用另一个重写类里的方法该如何实现呢。
解决方案 »
- 各位大虾,帮我看看下面那个程序里那个for循环是什么意思??
- 请教各位高手,如何能够识别机器安装了googletoolbar,baidutoolbar等软件,
- DataSet中安数据大小排序有什么比较好的方法?
- C#事务和存储过程的问题
- IP扫描时如何穿透防火墙
- C# 怎么实现这个功能?
- DataGridView中的数据在新增数据后如何刷新呢——这样就可以看到这个新增的数据了
- 关闭保存的制作
- 举手之劳!请大家写一个ADO.net连接SQL Server的数据库连接字符串
- C#中如何将类库文件中的数组数据赋值给界面上的label控件并显示
- 用户控件在DataGridView单元格内的位置
- 急~~~求助: 状态机器工作流启动报错,
class1.Method();
公共类 class2=new 类2();
class2.Method();
我醉了,回答的错了咋办?
我现在两个界面都调用同样的方法,只是数据不同,所以呢
就写了在idatabase 里写了虚方法 searth()。
然后又写了两个类a,b
a和b都对虚方法做了重写
现在我写了个公共方法t.
t直接调用idatabase的虚方法。
现在我两个界面都调用t中我写的方法
要解决的就是能让
一个界面调用的是a类中重写的那个方法
一个界面吊样b类中重写的方法
请大家帮忙!!!!!!!!
第一个重写类为class2;
第二个重写类为class3;
虚方法为method();
class1 a=new class2();
a.method();//调用class2的重写方法(也可以把class1换成class2)
class1 a=new class3();
a.method();//调用class3的重写方法(也可以把class1换成class3)
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ReflectionTest
{
public class BaseType
{
public BaseType()
{
} public virtual string GetInitValue()
{
return this.GetType().Name;
} public virtual string GetSearchValue()
{
return "BaseSearch";
}
}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ReflectionTest
{
public class TestA:BaseType
{
public TestA()
{
} private string _value; public string Value
{
get { return _value; }
set { _value = value; }
}
public override string GetInitValue()
{
return this.GetType().Name;
}
}
}测试:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ReflectionTest
{
class Program
{
static void Main(string[] args)
{
BaseType baseType = new BaseType();
baseType = (BaseType)getInstance("ReflectionTest.TestA"); //strSearchValue = BaseSearch
string strSearchValue = baseType.GetSearchValue(); //strValue = TestA
string strValue = baseType.GetInitValue(); } public static Object getInstance(string strTypeName)
{
Type t = Type.GetType(strTypeName);
if (t == null)
{
return null;
} return Activator.CreateInstance(t);
}
}
}
第一个重写类为class2;
第二个重写类为class3;
虚方法为method();
class1 a=new class2();
a.method();//调用class2的重写方法(也可以把class1换成class2)
class1 a=new class3();
a.method();//调用class3的重写方法(也可以把class1换成class3)
然后在不同界面引用业务操作类的时候,分清楚是引用那个重写类的,是class1.class2
if(obj1 != null)
{
//执行重载的方法
}class2 obj2 = obj as class2;
if(obj2 != null)
{
//执行重载的方法
}
public class Base //基类
{
pulbic virtual void area()
{...}
}
pulbic class A:Base //派生类
{
pulbic override void area()
{...}
}
pulbic class B:Base
{
pulbic override void area()
{...}
}
public class C // 公共类
{
Base base=new Base()
pulbic void Search()
{
//引用虚方法area() ;
}
}
在两个界面中应用这个公共类方法c 的时候
界面一:
pulbic class 界面一
{
C c=new C();
///应用Search()方法,这个时候他调用的是派生类A的实现方法该如何实现
}
pulbic class 界面2
{
C c=new C();
///应用Search()方法,这个时候他调用的是派生类B的实现方法该如何实现
}