Общий вызов перегруженных методов - PullRequest
0 голосов
/ 28 апреля 2011

У меня проблема с обобщением 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 Ответ

1 голос
/ 28 апреля 2011

Ну, то, что вызывается, должно быть определено один раз для всех типов. Ваш String printObject(String o) будет действителен только в том случае, если T является строкой, в противном случае нет, поэтому компилятор не может связать универсальный метод с этим статически типизированным методом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...