안녕하십니까? 동상이몽입니다.

아래의 상황이 있습니다. 이 상황에서 프로그램 동작 중에 A라는 변수의 타입을 바꾸고 싶은데 어떻게 하면 될까요? 방법이 있을까요?
언어는 C#입니다.

클래스 1
{
   int member;

   void print ( PrintOut("integer type : " + member);
}

클래스 2
{
   string member;
  
   void print ( PrintOut("string type : " + member);
}

함수 F (인수 I)
{
   변수 A;

   IF 인수 I가 Int type이면
       변수 A의 타입을 클래스 1로 변경
   ELSE
       변수 A의 타입을 클래스 2로 변경

   A.print();
}

위의 상황에서 클래스 1과 클래스 2의 내부를 변경하는 것은 불가능하다는 전제가 있습니다. 바꿀 수 있는건 함수 F밖에 없는 상황입니다.

혹시 경험있으시면 좋은 의견 부탁드립니다.

덧 : 예가 좀 저질 스럽네요. 클래스 하나로 만들 수 있는걸 두개로 나눴네요. 실제 상황은 저것보다는 훨씬 복잡한 상황입니다. (물론 그것도 애초에 설계가 잘됐다면 하나로 가능하지 않았을까 싶습니다만..)