.Net] C# 객체 숨기기....
특정 객체를 숨겨야 할때...? 엥??? 설명이 쉽지 않군...
이번 시스템 모니터링에 중심이 되는 조그만한 객체 하나가 있다.
이 객체의 내용은 모두 암복호화 시킬 예정이기에 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 |