저는 DynamicObject의 하위 클래스가 있습니다. 따라서 DO의 명시 적 캐스팅 메소드 TryConvert와 마찬가지로 프리미티브 유형의 암시 적 캐스팅을 구현하고 싶습니다. 즉, 여러 암시 적 연산자 [유형] 함수를 작성하지 않아도됩니다.DynamicObject 암시 적 캐스팅
사용법 :
dynamic myDynamicObject = new MyDynamicObject("1");
int sum = 1 + myDynamicObject; // instead of int i = 1 + (int)myDynamicObject;
는 가능하고 만약 그렇다면, 어떻게?
"1 + myDynamicObject"시나리오에서 암시 적 캐스트를 사용하면 캐스트 유형에서 왼쪽면 연산이 사용됩니다. 이 경우 ints operation + (int, int). 하지만 그렇습니다. TryBinaryOperation은 왼쪽 작업 만 지원합니다. 그래서 명시 적 캐스팅에 대한 TryConvert와 같은 암시 적 캐스팅과 비슷한 방법이 매우 유용합니다. –
사실 TryConvert는 암시 적 및 명시 적 캐스팅을 모두 지원합니다. 예를 들어,이 잘 작동합니다. "int sum = myDynamicObject;" TryConvert를 재정의하는 경우. 그러나 이진 연산을 수행 할 때 (그리고 단항도 같음) TryConvert 메서드가 호출되지 않습니다. [email protected]에 글을 작성하고 사용 사례를 설명해주십시오. 그것은 버그 일 수도 있고, 팀이 나보다 잘 설명 할 수있는 배후의 합리적 디자인 일 수도 있습니다. –