내 함수는 'type'매개 변수 인 'value'매개 변수를받습니다. 개체의 멤버에게 할당하려고하지만 캐스트가 암시 적으로 발생하지 않으므로 명시 적으로 지정해야합니다. 그러나, 나는 실제로 객체에 해당 멤버의 현재 유형을 지정하지 않기 때문에 나는이 작업을 수행 할 수 있습니다 :(C#)로 캐스팅 할 형식을 동적으로 결정합니다.
positiveOrder.OrderID = (int)value;
하지만, 비즈니스 요구 사항의 변화와 OrderIDs를 발생시켜 다른 방식으로 저장되어있는 경우, 예를 들어 GUIDS의 Strings에 대한 유형 변경을 포함하여 여기서 다시 와서 변경해야합니다. 이는 바람직하지 않은 결합입니다. 나는
positiveOrder.OrderID = value as thisOrder.OrderID.GetType();
또는
positiveOrder.OrderID = (typeof(thisOrder.OrderID)) value;
같은 코드의 다양한 순열을 실험했다 그러나 아무것도 작동하는 것 같다. 프로그래밍 방식으로 변환 할 형식을 지정하는 방법에 대한 아이디어가 있습니까? Order 클래스가 변경되지 않기 때문에 컴파일 타임이나 런타임에 수행 할 수 있습니다. 같은
"내일 주문 클래스를 변경하여 OrderID 멤버를 String으로 저장합니다."왜 이렇게할까요? 그리고 이것은 '가치'의 유형에 어떻게 영향을 미칩니 까? – Codesleuth
값은 항상 내가 제어하지 않는 코드에 의해 객체로 전송됩니다. 이 코드는 구현 세부 사항을 인식하지 못하기 때문에 전송하면 전송됩니다. 변화하는 비즈니스 요구 사항에 따라 OrderID 유형을 변경해야 할 수도 있습니다. 지금은 모형에 간단한 증분 정수를 사용하고 있지만 최종 응용 프로그램에서는 대신 문자열을 사용할 수 있습니다. OrderID 유형을 두 번 지정하여 반복하지 않으려 고합니다. 변경해야 할 경우 두 번 변경하지 않아도됩니다. 이것은 기능적 문제보다 좋은 설계 문제입니다. – Neil