programing tip

정적 컨텍스트는 항상 C #에서 단일입니까?

itbloger 2021. 1. 10. 16:54
반응형

정적 컨텍스트는 항상 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

반응형