2013-07-29 8 views
0

나는 코드데이터 소스의 유형을 어떻게 찾을 수 있습니까?

binding.DataSource = this.bindingSource.DataSource; 

의 다음 줄을 디버깅하고 직접 실행 창 쿼리에서

binding.DataSource

에 대한 자세한 정보를 찾으려면 노력하고 있어요? binding.DataSource 반환

Count = 1 
[0]: {Contact Events} 

내가 intellisense와 쿼리 할 수있는 뭔가로 바인딩하고 싶습니다. 데이터 소스를 캐스팅하고 싶습니까? 무엇을 캐스팅해야합니까?

[업데이트] 바인딩 소스는 다음과 같이 생성되었습니다.

public BindingSource GetEventTypesBindingSource() 
    { 
     try 
     { 
      DbSet<ContactEventType> dset = base.Context.ContactEventTypes; 
      IOrderedQueryable<ContactEventType> qry = dset.Where(p => p.Id > 0).OrderBy(x => x.Description); 
      qry.Load(); 
      var bindingSource = new BindingSource(); 
      bindingSource.DataSource = dset.Local.ToBindingList(); 
      return bindingSource; 
     } 
     catch (Exception ex) 
     { 
      HandleException.Show(ex); 
     } 
     return null; 
    } 

나는 디버거

? (List<ContactEvent>) binding.DataSource.GetType() 

에 다음하지만 그것은 아마 List<ContactEvent>하지만 디버거 및/또는 반사를 사용하여 찾을 수 있습니다

The type or namespace name 'List' is not valid in this scope 
+0

모든 데이터 바인딩 컨트롤의'DataSource'는'object' 타입입니다. "내가 무엇에 던져 넣을 수 있는지"에 대한 질문을받지 못했습니다. 양식로드 또는 어딘가에 이미 DataSource가 컨트롤에 할당되어 있어야합니다. – Prash

답변

1

을 얻을 시도 [업데이트] .

디버거의 조사 식 창에서 변수를 보면 해당 변수의 데이터 형식이 표시됩니다. 데이터 소스에서 GetType을 호출하면 객체 유형을 반환합니다 (디버거에서도이 작업을 수행 할 수 있으며 결과 유형을 검사 할 수 있음).

+0

디버거 및/또는 리플렉션을 사용하여 어떻게 알 수 있습니까? –

1

처음에는 답변과 관련이 없지만이 경우 데이터 소스를 사용하지 않아도됩니다 (datamember 속성을 사용하지 마십시오). 컬렉션에 직접 바인딩 할 수 있습니다. 컬렉션 유형은 엔터티 프레임 워크 어셈블리에서 사용자 지정 바인딩 목록 구현 일 수 있습니다. 어쩌면 당신은 그 이름이 공개되지 않기 때문에 IEnumerable에 캐스팅하는 것이 좋을 것입니다. BindingList에서 파생 된 사용자 지정 구현이 올바르게 기억되면 BindingList도 좋습니다.