퇴근5분전


특정 객체를 숨겨야 할때...? 엥??? 설명이 쉽지 않군...

이번 시스템 모니터링에 중심이 되는 조그만한 객체 하나가 있다.

이 객체의 내용은 모두 암복호화 시킬 예정이기에 dll을 참조한다고 해서 툭 튀어나오면 안된다.

또한 관련된 객체( 참조...)들에서도 점 찍어서 텨나오면 안된다.

물론 리플렉터로는 답없다 ㅡ.,ㅡ;

## 조건  ############################################################
1. 프로젝트 A영역에  [숨겨야 할 객체] 가 존재
2. 프로젝트 B영역에선 숨겨야 할 객체가 보여선 안됨.

프로젝트 = dll ( 어셈블리 ) 단위

namespace 프로젝트 A영역
{
    public interface 통신인터페이스
    {
        string 이름 { get; }   
    }

    public class 옮겨줄객체 : 통신인터페이스
    {
        public 옮겨줄객체( string name )
        {
            nm = name;
        }

        string nm = "";
        string 통신인터페이스.이름
        {
            get { return nm; }
        }
    }
    internal class 숨겨야할객체
    {
        public string 이름
        { get; set; }       
    }

    public class 공개된객체
    {
        internal List<숨겨야할객체> 비밀 = new List<숨겨야할객체>();
        public void 데이타전달(통신인터페이스 m)
        {
            비밀.Add(new 숨겨야할객체(){ 이름 = m.이름 });
        }
   
     }
}


공개된객체 에서 숨겨야야할 객체를 internal로 가지고 있다.

이러면 물론 프로젝트A영역에선 인텔리센스를 이용하면 보인다.

그러나, 타 프로젝트에서는 볼 수 없다.

이러면 끝이 아니다... 이유인즉. 공개된 객체어서 숨겨야 할 비밀 객체에 데이타를 전달!

그럼 Property를 이용해서 넣어주면 되지 않는가? 이지만!!

지금 설계하고 있는 것이 컬렉션 데이타 이므로... Get 시켜줄수도 없공... 일일이 파라미터로 받자니..

또 hash...등등.. 컬렉션으로 받기도 애매하다... 객체 자체가 internal이기에 ...

이때, 통신 인터페이스 + 옮겨줄 데이타 객체를 통해서 구성해준다.

namespace 프로젝트영역B
{
....
       공개된객체 ad = new 공개된객체();
       옮겨줄객체 mp = new 옮겨줄객체("Map");
       ad.데이타전달(mp);
....
}

옮겨줄 객체에 먼저 담고 - 전달해준다.

음.. 쓰다보니... 괜한짓인가???



'# 1) 프로그래밍' 카테고리의 다른 글

.Net] 가운데 이동  (0) 2012.03.25
.Net] 양쪽 맞춤.  (0) 2012.03.25
C# 포인터...  (0) 2012.03.16
컨트롤 마우스 이동 처리  (0) 2012.03.14
.Net 2008 ] XML 직렬화  (0) 2012.03.13