Это звучит как проблема пространства имен для меня.
Рассмотрим это:
// In some file somewhere
namespace firstNamespace
{
Class MyString : String
{
public static TrimSafe() {}
}
}
// The first file you copied from
namespace firstNamespace
{
public void foo() { TrimSafe(); } // Works!
}
namespace secondNamespace
{
public void fee() { TrimSafe(); } // Nope :(
}
Чтобы исправить последнюю, вам нужно добавить using firstNamespace;
в верхней части с другими с помощью утверждений. Причина в том, что первый файл, который вы копируете, находится в том же пространстве имен, где определено TrimSafe.
В C++ вы, как правило, #include
все указанные файлы .h для каждого класса, который вы используете.
В C# вы не добавляете операторы using
для классов, а вместо этого для пространств имен. Вам должно быть только using
пространство имен, и все внутри этого пространства имен вместе с ним. Все, что определено в пространстве имен xyz
, видит все остальное, определенное в пространстве имен xyz
, без необходимости иметь using
для каждого класса.
Ваш второй файл находится в другом пространстве имен, и поэтому он не знает, что находится в первом пространстве имен, и поэтому он не видит TrimSafe.
Это мое предположение в любом случае.
Оба файла используют одно и то же пространство имен? – Shaz
нет, но они должны быть разными – John
Посмотрите на свой список «использования» директив в первом файле и сравните их со вторым файлом. TrimSafe() может быть методом расширения, который не импортируется во второй файл. –