나에게 네임 스페이스 문제가있는 것 같습니다.
이를 고려
// 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 문에 상단에 using firstNamespace;
를 추가해야합니다. 그 이유는 복사하려는 첫 번째 파일이 TrimSafe가 정의 된 것과 동일한 네임 스페이스에 있기 때문입니다.
C++에서 일반적으로 #include
은 사용하는 각 클래스에 대해 참조되는 모든 .h 파일입니다.
C#에서는 클래스 대신 using
문을 추가하지 않고 대신 네임 스페이스를 추가합니다. 네임 스페이스가 using
일 경우에만 해당 네임 스페이스의 모든 것이 함께 제공됩니다. 네임 스페이스 xyz
에 정의 된 내용은 각 클래스에 using
이 없어도 네임 스페이스 xyz
에 정의 된 다른 모든 항목을 확인합니다.
두 번째 파일이 다른 네임 스페이스에 있으므로 첫 번째 네임 스페이스에 무엇이 있는지 모르기 때문에 TrimSafe가 표시되지 않습니다.
어쨌든 내 추측입니다.
두 파일이 동일한 네임 스페이스를 사용하고 있습니까? – Shaz
아니요, 서로 다릅니다. – John
첫 번째 파일에서 "using"지시어 목록을보고 두 번째 파일과 비교해보십시오. TrimSafe()는 두 번째 파일에서 가져 오지 않는 확장 메서드 일 수 있습니다. –