重载方法的通用调用

时间:2011-04-28 15:58:26

标签: c# generics overloading

我在尝试调用重载方法时遇到C#泛型问题。如果你能帮助我,我将不胜感激。

我致电Example.test()

public class Example
{

    private String printObject(Object o)
    {
       //this is the one that is called
    }

    private String printObject(String o)
    {
      //this is the one I expect to be called
    }

    private void callPrint<T>(Object o)
    {
            if (o is T)
            {
                T tmp;
                tmp = (T)o;
                data = _printObject(tmp);
            }
    }

    public String foo(Object o)
    {
        callPrint<String>(o);
    }

    public static void test()
    { 
         String test="Test";
         foo(test);
    }
 }

1 个答案:

答案 0 :(得分:1)

嗯,必须为所有类型确定调用一次。只有String printObject(String o)是字符串时,T才有效 - 否则不会,因此编译器无法将泛型方法绑定到此静态类型的方法。