내가 이러한 파일을 말해봐 :C# 확장 메서드의 가시성을 동일한 어셈블리의 클래스로 제한 할 수 있습니까?
MyCode.cs
namespace MyCodeNamespace
{
public class MyClass
{
//OMITTED
}
internal static class MyExtensions
{
internal static void Foo(this string str)
{
//OMITTED
}
}
}
OtherCode.cs
using MyCodeNamespace;
namespace OtherCodeNamespace
{
//OMITTED
}
두 파일이 동일한 어셈블리의 일부입니다. Foo가 MyCode.cs에 액세스 할 수 있지만 OtherCode.cs에 액세스하지 못하게 할 수있는 방법이 있습니까? 내 질문은이 질문과 비슷합니다. C# Extension Methods only visible and accessible within one class ("private") 하지만 그 대답은 내가 찾고있는 것이 아닙니다. 위의 질문에 대한 대답에 따라 누군가가 여전히 "using"문을 추가하여 액세스 할 수 있습니다. 내 코드에 만의 확장 메서드를 만들 수있는 방법이 있습니까? 다른 곳에서는 같은 어셈블리의 다른 클래스가 아닌 다른 곳에서도 사용할 수 있습니까?
확장 메서드를 호출하기위한 구문이 유용하기 때문에 내가하는 작업에 유용 할 것이므로 (그렇지 않으면 개인 메서드 대신 대신 만들 수 있습니다), 다른 사람들이 보길 원치 않습니다. 자신이 생각하는대로하지 않을 경우 코드에서 사용하십시오. 그리고 Visual Studio의 intellisense 덕택에 현재 확장 메서드가 사용 가능한 메서드 목록에 표시됩니다 (네임 스페이스를 추가 할 수있는 옵션 포함).
"하지만 난 그것을보고 그들이가하는 가정 무엇을하지 않는 경우에 자신의 코드에서 그것을 사용하는 다른 사람을 원하지 않는다"? 다른 사람이 실수를하지 못하도록 많은 노력을 기울이고 있습니다. – hometoast
OtherCodeNameSpace를 부모 네임 스페이스로 만들 수 있습니까? – MikeG
C#의 이름 공간은 조직적이며 접근성 제어에 아무런 역할을하지 않습니다. –