不能隐式地将对象转换为类型

时间:2013-06-21 14:59:55

标签: c#

这是我想要做的事情

我有一个班级

class A {}

另一个类中有一个函数

 class B
    {
        int count(object obj)
        {
                conn.table<T>.....   //what I want is conn.table<A>, how to do with obj as object passed to the function   
        }
    }

这就是我打电话的方式

B b = new B();
b.Count(a);  // where a is the object of class A

现在在count函数中我想传递一个classname 现在当我obj.getType()时,我收到错误。

2 个答案:

答案 0 :(得分:3)

使用generic method

class B
{
    int count<T>(T obj) where T : A
    {
        // Here you can:
        // 1. Use obj as you would use any instance or derived instance of A.
        // 2. Pass T as a type param to other generic methods, 
        //    such as conn.table<T>(...)
    }
}

答案 1 :(得分:1)

我想我现在明白了。您正在尝试获取obj

的类型说明符

我的实际建议是重新考虑你的设计和/或使用像FishBasketGordo这样的仿制品,

但是如果你必须这样做,我知道的最好的方法是分别检查obj可以的不同类型

public int Count(object obj)
{
    if(obj is A)
    {
        conn.table<A>.....
    }
    else if(obj is B)
    {
        conn.table<B>.....
    }
    ...
}