오늘은 저번에 다룬  내용을 조금 더 심화시켜 보려한다.
음 저번에 다룬 내용은 nested element  를 선언하고 사용하는 방법이었는데 저번에 다룬 nested element 는 단순히 하나의 instance로 제한되어 있었고 코드로 정의된 element 내에서 나타내야만 했다.
이런 element를 Collection 형태로 하거나 element list 로 구성하는 것은 약간은 다른 접근이 필요하다.

이번에도 저번과 마찬가지로 기존에 만들어 오던 소스에 덫붙여 나가도록 하겠다. ^^

먼저 Configuration file 내에 Element를 Collection  혹은 List 형태로 구성하기 위해서는 ConfigurationElementCollection Class 로 부터 상속을 받아야만 한다.

Configuration File 의 <appSettings> Configuration Section을 사용하던 개발자는 Add/Remove/Cear - 짧게는 ARC Map 에 익숙할 터인데 이 ARC Map 은 ASP.NET Web.config 에서 지원되는 Cascading Collection 이다.
ASP.NET 의 경우 하위 Folder Path 의 Web.Config 의 configuration 내용이 상위 폴더의 config 내용에 Add/Remove/Clear 되어 적용된다.

이런 ARC Map 가 기본적인 Type 으로 이와 같은 Configuration을 구성해보려한다.

Configuration 의 내용을 보면 다음과 같다.


    1 Imports System.Configuration

    2 

    3 Public Class AddressElement

    4   Inherits ConfigurationElement

    5 

    6   Shared _properties As ConfigurationPropertyCollection

    7 

    8   Shared _propertyName As ConfigurationProperty

    9   Shared _propertyPhone As ConfigurationProperty

   10   Shared _propertyEmail As ConfigurationProperty

   11 

   12   Shared Sub New()

   13     _propertyName = New ConfigurationProperty("name", GetType(String), Nothing, ConfigurationPropertyOptions.IsRequired)

   14     _propertyPhone = New ConfigurationProperty("phone", GetType(String), Nothing, ConfigurationPropertyOptions.None)

   15     _propertyEmail = New ConfigurationProperty("email", GetType(String), Nothing, ConfigurationPropertyOptions.None)

   16 

   17     _properties = New ConfigurationPropertyCollection()

   18     _properties.Add(_propertyName)

   19     _properties.Add(_propertyPhone)

   20     _properties.Add(_propertyEmail)

   21   End Sub

   22 

   23 End Class


일단 졸음이 몰려오는 관계루다가... 요까이 먼저 하고...
내일 나머지를 올리는 게 좋을 듯하다... ^^ 죄송.


행복한 고수되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\
반응형
제목은 거창하다... 근데 내가 한 것은 얼마 없다. ^^;


지인 중 한분이 질문을 했다.(난 머 별로 알고 있는 것도 없는데 생각할 만한 것들에 대한 질문을 가끔 주셔서 -자기는 더 많이 알고 있으면서 말이다. 이또한 참으로 난감허다.- 공부를 하지도 않는데 덕분에 그나마 공부를 하게 되는 것 같다. - 감사합니다.)

MSN Messenger 의 상태가 언제 "다른 업무중" 으로 변하는지... 그리고 그것을 어떻게 체크할 것인지...

지인과 여러 상황에 대해서 이야기가 오갔다.

생각도 해보고...(허무맹랑한-messenger 개발자가 혹시나 그렇게 개발했을까 할 정도의-생각도 해보고...ㅋㅋㅋ)

여튼 답이 안나와서...

초초초 수퍼 고수 정책임님께 한마디 툭~! 여쭤봤다...

작동방식에 대해 찬찬히 살펴보고
서로 테스트를 해보고(서로는 아니고 - 자~ 제가 요로케해볼테니 상태가 변하는지 보셔요.. 변해요? 안변해요? 뭐 이런식의 질문과 답변. 난 그냥 도와드릴뿐...- 여튼)

얻은 결론(내가 이해하는 마지막... ^^')은
메신저는 일정 주기로 현재 활성창을 체크한다는 것!
그 활성창은 의 Border Style 인 FormBorderStyle 속성은 None 이고
Full Screen Mode 이며 Windows 의 Taskbar 를 가려야 한다는 것.

그리고 추가적인 링크도 함께 주셨다.

How to make Windows Form app truly Full Screen (and to hide Taskbar) in C#?

한번 살펴보기 바란다.

지인께서 다 구현하게 되면 한번 보여주기로 했다...
꼭 보여주시기를...


그럼 행복한 고수되시기를...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형
오늘 Coupon 을 생성해야 했습니다. 쿠폰에 쿠폰 넘버를 먹여야 하는데... 훔... 오라클에서 이렇게 구현했습니다. 시리얼은 길면 길수록 중복을 차단하는데 도움이 될 것입니다. 이유는 저보다도 잘 아시겠죠?
CREATE OR REPLACE FUNCTION FN_CREATE_STRING
( 
 FI_LENGTH IN NUMBER
)RETURN VARCHAR2 
AS

   TMPGUID VARCHAR2(50) := '';
   RNDVALUE NUMBER := 0;
   V_COUNTER NUMBER := 0;
   V_STRING VARCHAR2(36) := '';
   
BEGIN  

  V_STRING := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  
  FOR V_COUNTER IN 1..FI_LENGTH LOOP
  	  SELECT ROUND(DBMS_RANDOM.VALUE * 36, 0) INTO RNDVALUE FROM DUAL;
  	  TMPGUID := TMPGUID || SUBSTR(V_STRING, RNDVALUE  , 1);
  END LOOP; 
  
  RETURN TMPGUID;

END FN_CREATE_STRING;

그리곤 요로케 쓰시면 됩니다.  ^^
SELECT FN_CREATE_STRING(13) FROM DUAL;


Oracle 버전은 8.1.7 입니다.


행복한 하루되십시요.

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

반응형

+ Recent posts