念珠菌性用什么药最好:关于一个C#泛型实现多态的问题请教。

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 19:09:52
关于一个C#泛型的问题。
假设有以下定义
class A;
class B : A; //类B从类A继承
class C : A;

class D<T> where T : A; //定义一个泛型类

D<B> obj1 = new D<B>();
D<C> obj2 = new D<C>();

有没有一种类型可以同时引用obj1与obj2对象,且能够访问类A提供的所有接口?

QQ-10342713;非常感谢。
对不起,您的方法不可行。

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
D d1 = new D();
D d2 = new E<A>();
D d3 = new E<B>();
D d4 = new E<C>();

d1.fun2();
d2.fun2();
d3.fun2();
d4.fun2();
}
}

public class A
{
public virtual void fun1()
{
Console.WriteLine("In/use class A");
}
}
public class B : A
{
public override void fun1()
{
Console.WriteLine("In/use class B");
}
}
public class C : A
{
public override void fun1()
{
Console.WriteLine("In/use class C");
}
}
public class D
{
public virtual void fun2()
{
Console.WriteLine("In class D");
}
}

public class E<T> : D where T : A, new()
{
T t;
public E()
{
t = new T();
}
public override void fun2()
{
t.fun1();
}
}
}

不是很明白你的意思!
class A {
public void AMethod() {
}
}
class B : A {
}
class C : A {
}
class D<t>:A where t:A {
}

D<B> obj1 = new D<B>();
D<C> obj2 = new D<C>();
A obj3 = new D<A>();
A obj4 = new D<B>();