Tôi có một lớp con của DynamicObject và tôi muốn triển khai thực hiện truyền ngầm cho các kiểu nguyên thủy tương tự như phương thức đúc rõ ràng của DO TryConvert; nghĩa là, không cần viết nhiều hàm operator [type] ngầm định.DynamicObject ẩn đúc
Cách sử dụng:
dynamic myDynamicObject = new MyDynamicObject("1");
int sum = 1 + myDynamicObject; // instead of int i = 1 + (int)myDynamicObject;
Là có thể và nếu như vậy, làm thế nào?
Với dàn diễn viên tiềm ẩn trong kịch bản "1 + myDynamicObject", nó sử dụng thao tác bên trái trên loại dàn diễn viên; trong trường hợp này ints operation + (int, int). Nhưng có, TryBinaryOperation chỉ hỗ trợ các hoạt động bên trái. Đó là lý do tại sao phương pháp đúc tương tự như TryConvert cho đúc rõ ràng sẽ rất hữu ích. –
TryConvert trong thực tế hỗ trợ cả ẩn và rõ ràng đúc. Ví dụ, điều này hoạt động tốt: "int sum = myDynamicObject;" nếu bạn ghi đè lên TryConvert. Nhưng khi bạn thực hiện một hoạt động nhị phân (và tôi đoán là một unary là tốt), phương pháp TryConvert không được gọi. Tôi khuyên bạn nên viết thư cho [email protected] và giải thích trường hợp sử dụng của bạn ở đó. Nó có thể là một lỗi hoặc có thể có một số thiết kế hợp lý đằng sau điều này, mà nhóm có thể giải thích tốt hơn tôi. –