2012-12-13 1 views
1

. 데이터 테이블은 유사하지만 별개입니다. 이 메소드는 데이터 테이블에서 동일한 기능을 수행합니다. 대신 기본적으로 방법을 복제하고, 데이터 테이블 유형에 따라 매개 변수 유형을 변경의, datatables에 대한 사용자 정의 인터페이스를 생성하는 라인을 따라 뭔가를 할 수있는 방법, 나는 인터페이스의 매개 변수를 하나의 메소드를 가질 수있는 방법이 유형?C#을 강력하게 형식화 된 데이터 집합 - 같은 방법으로 다른 datatables를 통과 (인터페이스?) 나는 같은 방법으로 별도의 형식화 된 데이터 집합 데이터 테이블을 통과하는 것을 시도하고있다

내가 현재 가지고있는 : 내가 좋아하는 것이 무엇

private PassdownDataset.SalesOrdersForManagerDataTable datatable1; 
private PassdownDataset.SalesOrdersDataTable datatable2; 

public SomePublicMethod() 
{ 
PopulateDepartmentName(datatable1); 
PopulateDepartmentName(datatable2); 
} 

private void PopulateDepartmentName(PassdownDataset.SalesOrdersForManagerDataTable dt) 
{ 
//(operations performed on datatable) 
} 

private void PopulateDepartmentName(PassdownDataset.SalesOrdersDataTable dt) 
{ 
//(operations performed on datatable) 
} 

이 가지고 :

private PassdownDataset.SalesOrdersForManagerDataTable datatable1; 
private PassdownDataset.SalesOrdersDataTable datatable2; 

public SomePublicMethod() 
{ 
PopulateDepartmentName(datatable1); 
PopulateDepartmentName(datatable2); 
} 

private void PopulateDepartmentName(
       PassdownDataset.CommonInterfaceForBothDataTables dt) 
{ 
//(operations performed on datatable) 
} 
+0

강하게 입력 된 DataTable 대신에 동일한 DataTable (다른 DataRows)을 사용하거나'DataTable' 또는'IEnumerable '을 입력 할 수 있습니다. 아니면 정말 형식화 된 DataTable 기능이 필요합니까? –

+0

공변 인터페이스를 사용하여 해킹 할 수 있습니다. – SLaks

+0

유일한 문제는 입력 된 데이터 행은 또한 서로 다른, 그리고 불행하게도 내가 공변 인터페이스에 대해 모르는 입력 데이터 테이블 기능 – spurro

답변

0

당신이 사용하는 상속을 해결할 수, 나는 확신합니다. 그러나 그것은 어색하고 강제적 인 것으로 판명 될 수 있습니다.

나는 그런 것들에 대한 아주 친절하게 C# 4에 추가 된 동적 기능을 발견했다. 가장 큰 단점은 정적 유형 지정과 리팩터링 친숙 함을 잃게된다는 것입니다. 동적 사용이 매우 지역화 된 경우 (단일 도우미 메서드 내에 포함 된 경우와 같이) 괜찮다고 생각합니다.

는 예를 들어, 모든 데이터베이스 개체가 CreateDateTime 필드가 당신이 그것을 초기화 도우미 메서드를 원하는 것을 상상한다. 동적 인 경우에 유용합니다. 대안은 모든 엔티티가 인터페이스를 상속받는 것입니다.

관련 문제