Компилятор C # говорит, что функция не определена, когда она - PullRequest
0 голосов
/ 04 августа 2010

Мне просто нужна другая пара глаз ... Я не вижу ничего плохого в следующем.На самом деле, я клянусь, что недавно у меня было нечто подобное, и это сработало.

В моем Collections.dll:

namespace Collections
{
   public class CSuperAutoPool
   {
      public static CSuperAutoPool ActivateByType(Type typeToBeActivated, params object[] activatedArguments)
      {
          //...
      }
   }
}

В другой DLL я ссылался на DLL коллекцийпроект и использовать его в этой функции:

namespace Organization
{
    public class CBaseEntity : CSuperAutoPool
    {
        protected static CBaseEntity Create()
        {
            //...
            CBaseEntity created = (CBaseEntity)CSuperAutoPool.ActivateByType(callingType); //Error here.
            //...
        }
    }
}

Ошибка: «Collections.CSuperAutoPool» не содержит определения для «ActivateByType»

Я использовал ActivateByType в CSuperAutoPool вдругая функция, и в этом нет ошибок.DLL Коллекции компилируется без ошибок.В той же библиотеке DLL, где существует пространство имен Organization, использовались другие аспекты класса CSuperAutoPool другими способами, без ошибок компилятора.

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

В вашем примере должно быть что-то не так, или вы не используете ту версию кода, которую, по вашему мнению, используете, например, Может ли быть так, что в вашем проекте есть другой класс с именем CSuperAutoPool, возможно, в сборке, на которую есть ссылки?

Следующие фрагменты компилируются без ошибок:

namespace Collections
{
    public class CSuperAutoPool
    {
        public static CSuperAutoPool ActivateByType(
            Type typeToBeActivated, params object[] activatedArguments)
        {
            //...
            return null;
        }
    }
}

namespace Organization
{
    using Collections;
    public class CBaseEntity : CSuperAutoPool
    {
        protected static CBaseEntity Create()
        {
            Type callingType = null;
            //...
            CBaseEntity created = 
                (CBaseEntity)CSuperAutoPool.ActivateByType(callingType); 
            //...
            return created;
        }
    }
}
0 голосов
/ 04 августа 2010

Нашли это!0xA3 дал мне подсказку, в которой я нуждался: «Вы не используете версию кода, которую, по вашему мнению, используете» *

Когда я добавил ссылку на Коллекции в проект Организации, он не пометил галочкой проект Коллекциискомпилировать в диспетчере конфигураций.Другими словами, моя DLL-библиотека коллекций не компилировалась, пока я не сделал это вручную.

Спасибо, это то, что я имел в виду под дополнительным набором глаз.: -)

...