정적 컨텍스트는 항상 C #에서 단일입니까?
내부에 정적 필드가있는 라이브러리가 있습니다. 이 정적 필드의 두 인스턴스를 갖도록 앱을 만들고이 라이브러리를 참조하고 싶습니다. .Net 런타임은 동일한 라이브러리를 두 번 참조하는 것을 허용하지 않지만이 제한을 극복 할 수 있는지 궁금합니다.
라이브러리를 변경할 수는 없지만 복사 / 이름을 바꿀 수 있습니다.
그것은 당신이 생각하는 것만 큼 미친 것이 아닙니다. 실제로 AppDomains를 사용하여이를 달성 할 수 있습니다 .
각각 AppDomain
에는 정적 변수에 대한 자체 저장 위치가 있습니다. 따라서 프로세스에서 두 번째 AppDomain을 만들고이 MSDN 예제MarshalByRefObject
와 같이 상속 된 개체를 사용하여 서로 통신 할 수 있습니다 .
하지만 루카스의 제안 응용 프로그램 도메인에 일하는 것이, 다른 일반적인 형태 인수를 가지는 클래스가 다른 클래스로 처리됩니다로 또는 당신은 제네릭을 사용하여이 효과를 만들 수 있습니다, 따라서 자신의 정적 필드가 있습니다.
public class SomeClass<T>
{
public static string SomeField;
}
그때:
SomeClass<int>.SomeField = "A";
SomeClass<string>.SomeField = "B";
Console.WriteLine(SomeClass<int>.SomeField); // A
Console.WriteLine(SomeClass<string>.SomeField); // B
예를 들어 SomeClass<int>
는 라이브러리에 설정되고은 SomeClass<string>
사본이됩니다. 물론 이것은 라이브러리를 변경할 수 있거나 라이브러리가 이미 제네릭을 사용한 경우에만 작동합니다.
두 가지 제안 모두 효과가 있지만 아키텍처와 관련하여 모두 훌륭합니다.
나는 컨텍스트에 대해 알지 못하지만 귀하의 경우에는 정적이 아니며 두 개의 인스턴스가있는 새 속성으로 집계 클래스를 만드는 것이 가능합니다. 이것은 나에게 더 나은 방법 인 것 같습니다.
스마트 코드가있을 때마다 머릿속에서 경고가 시작됩니다. 스마트 코드는 항상 개발자에게 너무 영리합니다.
참조 URL : https://stackoverflow.com/questions/28235453/is-static-context-always-single-in-c
'programing tip' 카테고리의 다른 글
django-rest-framework serializer로 외래 키 값 검색 (0) | 2021.01.10 |
---|---|
호스트에서 Docker 컨테이너의 웹 서버에 액세스하는 방법 (0) | 2021.01.10 |
$ .each ()가 모든 항목을 반복하지 않는 이유는 무엇입니까? (0) | 2021.01.09 |
웹 페이지에서 위쪽 여백을 제거하려면 어떻게합니까? (0) | 2021.01.09 |
Iphone의 UiButton에 텍스트 여백 / 패딩 제공 (0) | 2021.01.09 |