2013-11-27 1 views
1

의미, 할 수있는 일이 있으니 shortbool에 할당하면 내 사용자 정의 유형 변환이 short에서 bool으로 호출됩니까?타입에 할당을위한 타입 변환을 추가 할 수 있습니까?

필자는 DB 첫 번째 POCO 모델을 가지고 있으며, 250 테이블의 DB에서 생성 된 전체 데이터 모델의 모든 true/false 값은 short? 또는 short입니다. 원래의 RDBMS에는 부울 값의 개념이 없습니다.

DbContext를 쿼리 할 때 형식 변환 오류가 발생하므로 모든 단락을 bool로 변경할 수 없습니다. 속성을 필요로하지 않고 값을 가져오고 설정할 수 있다면 bool을 맞춤 값 유형으로 바꿀 수 있습니다 (예 :

public struct BoolThatLikesShorts 
{ 
... 
} 

다음은 그래서 나는 우리가 효과적으로 완전한 bool 해당이

if (IsActive) 
{ 
... 
} 

처럼 사용 나중에 BoolThatLikesShorts IsActive = (short)1;처럼 사용합니다.

+0

나는 가능한 모든 해결책을 모르고있다. 당신은 항상 ToBool()이라는 짧은 메소드를 작성할 수 있지만 아마도 이것을 알 수있을 것이다. –

+0

나는 내 대답을 편집했다. – AgentFire

답변

1

뜻 경우 :

short foo = 4; 
bool bar = (bool)foo; // Or even without cast. 

당신은 사용자 정의가를 TypeConverter (또는 무엇이든) 호출하면 아니요, 그렇게 쉬운 일은 없습니다. 이 방법은입니다. 두 가지는 구조체

  • 암시 짧은YourType에서 명시 적으로 및 을 bool로하는 을 주조 할 수있는 사용자 정의 치 형를 작성한다 :

    그러나, 몇 가지 해결 방법이 있습니다 안에 정의 된 캐스트 연산자. Convert value when mapping을 : 그래서 당신은

    bool bar = (YourType)(short)3; 
    
  • 는이 엿 시도, 업데이트 된 대답에 관해서는이

    bool bar = ((short)3).ToBool(); 
    

같은 캐스팅 할 수 있도록 확장을 작성 가질 수있다.

+0

'foo'에 속성을 넣을 수는 있지만 할당을 캐스트로 변경할 수 없습니다. 이것은 DB 쿼리 결과에서 EF 엔티티 클래스를 자동으로 구체화하기위한 것입니다. – ProfK

+0

@ProfK 왜 EF, 데이터 매핑 등과 같이 사용하고있는 기술에 대해이 점과 다른 많은 것을 설명하면서 질문을 확장하지 마십시오. – AgentFire

+0

나는 질문을 확장했다. 나는 작동 할 수있는 놀기 좋은 실험을 생각해 냈습니다. 'bool'과'short'에서 암시 적 캐스트 연산자를 가진'YesNo'라는 구조체. 나는 단지 'YesNo'라는 이름을 좋아하지 않는다. 아마도'BOOL'일까요? – ProfK

1

하지 암시하지만 당신은 확장 메서드를 만들 수

public static bool CustomBoolConversion(this short value) 
{ 
    bool retVal; 

    // custom implementation 

    return retVal; 
} 

사용법 :

이 코드 배치 곳
short s = 1; 
bool b = s.CustomBoolConversion(); 
관련 문제