Tôi đang tìm cách tăng tốc tác vụ lặp lại khi viết mã. Tôi có ReSharper và tôi đang nghĩ rằng một tùy biến có thể làm những gì tôi cần.ReSharper có thể tạo mã sao chép các thuộc tính từ một đối tượng này sang đối tượng khác không?
Tôi có hai đối tượng cùng loại. Tôi muốn sao chép tất cả các thuộc tính công cộng của một đối tượng cho đối tượng khác. Tôi muốn công cụ, ReSharper trong trường hợp này, để tạo mã cho tôi. Tôi sẽ cho nó biết tên của đối tượng đầu tiên và đối tượng thứ hai. Tôi muốn nó tìm tất cả các thuộc tính công khai của đối tượng đầu tiên và sao chép các giá trị cho đối tượng thứ hai.
Dưới đây là các loại mã Tôi đang tìm kiếm để có được tạo ra với một công cụ như ReSharper:
foo.Name = moo.Name;
foo.Age = moo.Age;
foo.City = moo.City;
Tự động mã đơn giản này cho phép sao chép các giá trị từ phải sang trái sẽ tiết kiệm rất nhiều thời gian và tôi nghĩ rằng ReSharper có thể làm được. Tuy nhiên, tôi đã không nhìn thấy bất cứ điều gì bật lên trong tìm kiếm cho nó mặc dù.
Tôi không tìm kiếm kỹ thuật tạo mã CodeSmith hoặc mẫu T4 vì tôi chỉ muốn tạo các dòng cụ thể này trong lớp của mình, không tạo và toàn bộ lớp hoặc tệp riêng biệt.
Có ai biết cách nhấn một vài lần nhấn phím, nhập tên đối tượng "foo" và "moo" ở trên và có công cụ tạo bản sao này từ dòng mã phải sang trái không?
Cập nhật:
Tôi đã tìm thấy một số tài liệu về xây dựng mở rộng để ReSharper, và điều này có lẽ có thể đạt được bởi con đường đó, nhưng nó trông thực sự có liên quan.
http://www.jetbrains.net/confluence/display/ReSharper/PowerToys+Pack+3.0+User+Guide
này đang bắt đầu trông giống như một thử thách cuối tuần trừ khi ai đó đã viết nó.
tôi chưa bao giờ nghe nói về công cụ này. Với các lớp truy cập dữ liệu và các hợp đồng dữ liệu làm cho loại mã này là cần thiết, đây là một công cụ tuyệt vời! – Vaccano
Automapper chắc chắn là một điều tuyệt vời cho một số trường hợp, nhưng có thể rất chậm đối với số lượng lớn các đối tượng. – Telavian
Chúng tôi đã sử dụng Automapper trong một ứng dụng doanh nghiệp lớn với hàng tấn DTO và sau 6 tháng, chúng tôi đã từ bỏ nó vì khó duy trì và gỡ lỗi hơn việc gán đồng bằng cũ của các thuộc tính. Không nên được coi là một hit lớn chống lại AM nhưng cuối cùng chúng tôi chỉ muốn phá vỡ trên một dòng mã thay vì đọc ra một thông báo lỗi lớn (Thông báo lỗi là chính xác và hữu ích). – TheDev6