'generic'에 해당되는 글 2건

  1. 2013.10.15 T Generic 리턴하기
  2. 2012.10.18 [wp8] Generic 형식 전역(global)에서 사용하기
Windows8 App2013. 10. 15. 10:19

롯데시네마 같은 경우는 API를 따로 프로젝트로 빼내었다 유닛테스트에서도 사용하고 여러곳에서 유연하게 사용하기 위함

 

하지만 그렇게 함으로써 메세지박스를 뛰우지를 못해서 error 메세지만 따로 보내야 하는 경우가 생겼다..

 

그럴때 이렇게 하였다.

 

protected async Task<T> GetObjectAsync<T>(string url, HttpContent content) where T : ResultBase, new()
        {
            var uri = new Uri(BASE_DOMAIN + url);
            HttpResponseMessage result = null;
            try
            {
                result = await _httpClient.PostAsync(uri, content);
            }
            catch (Exception ex)
            {
                //var temp = new ResultBase() { err_message = ex.Message };
                return new T() { err_message = ex.Message };

            }

 

이부분을 잘보면 된다.

protected async Task<T> GetObjectAsync<T>(string url, HttpContent content) where T : ResultBase, new()

 

그래서 리턴을 이런식으로 가능하였다.

 return new T() { err_message = ex.Message };

참고한곳

http://stackoverflow.com/questions/4712567/c-sharp-generic-method-return-values

 

 


 


 

Posted by 동동(이재동)
Windows Phone 82012. 10. 18. 11:18

원래 Generic 형식은 Global에서 사용이 되지 않았다.

 

하지만 .net framework 4.0 이상부터는 dynamic 을 지원한다. ㅋㅋ

 

윈폰7에서는 Compact net framework 라 안되었지만 windows 8 phone은 강력해졌다.

 

예를 들어 이렇게 Webclient 에서 Json Data를 받으면 알려주는 제네릭 Event Handler를 만들었다고 하자

 

public class CompleteEvent<T>
   {
       public event EventHandler<JsonDataEventArgs<T>> completeEvent;
 
       public void JsonDataEvent(T jsonData)
       {
           EventHandler<JsonDataEventArgs<T>> temp = completeEvent;
           if (temp != null)
           {
               temp(this, new JsonDataEventArgs<T>(jsonData));
           }
       }
   }
 
   public class JsonDataEventArgs<T> : EventArgs
   {
       T _jsonDataDict;
 
       public JsonDataEventArgs(T data)
       {
           _jsonDataDict = data;
       }
 
       public T XmlData
       {
           get
           {
               return _jsonDataDict;
           }
           set
           {
               _jsonDataDict = value;
           }
       }
   }

 

이제 이것을 전역변수로 정의 해보자

 

api.cs에

 

public CompleteEvent<dynamic> ce = new CompleteEvent<dynamic>();

 

이렇게 되면 이 클래스의 CompleteEvent를 어디서든 사용할 수가 있다 CompleteEvent<T>형식으로는 전역변수를 사용할수가 없다

Posted by 동동(이재동)