2010-08-24 28 views

Trả lời

4

Bạn có thể sử dụng lại tệp cs bằng cách thêm chúng vào dự án của bạn AS LINK. Nhấp chuột phải vào dự án của bạn và chọn Thêm Hiện có ... Duyệt đến tệp của bạn và trong Nút Mở, sử dụng mũi tên kéo xuống ở bên phải để chọn Thêm Dưới dạng Liên kết. Bạn sẽ thấy tệp được thêm vào dự án của bạn với biểu tượng có biểu tượng Windows Shortcut nhỏ được phủ lên đó.

Chỉ cần nhớ - ASP.Net chạy trên thời gian chạy .Net. Silverlight chạy trên CoreCLR (thời gian chạy Silverlight.) Không phải tất cả mọi thứ mà biên dịch trong oone sẽ biên dịch trong khác ...

Để tách biệt một chút, #if chỉ thị có thể giúp, bạn cũng có thể sử dụng một phần Lớp học và một phần phương pháp (để thêm nội dung chỉ chạy trên máy chủ hoặc trên máy khách.)

+0

vậy, điều này có nghĩa là nó gần như thông minh hơn để xây dựng một lớp giống hệt nhau trong dự án Silverlight không có chắc chắn rằng mọi thứ sẽ biên dịch? – locoboy

+2

@ cfarm45: cách thông minh nhất để đi hầu hết luôn là mã có ít mã nhất. Nếu bạn cấu trúc lại các lớp miền của bạn để chúng không phụ thuộc vào asp.net, bạn có thể tái sử dụng chúng. Sao chép mã luôn luôn là kế hoạch B. –

+0

@ jdv ok tôi sẽ thấy những gì tôi có thể làm – locoboy

1

Vâng, ASP.NET tự sẽ không làm việc (ditto nhiều của toàn bộ thư viện), nhưng tôi giả sử bạn chỉ có nghĩa là bạn mô hình miền địa phương vv

IIRC bạn thể cố gắng chỉ đơn giản là tham khảo nó, nhưng nó cũng có thể tạo ra một thông điệp cảnh báo. Tất nhiên, bạn cần đặc biệt cẩn thận để không sử dụng bất kỳ thứ gì mà nền tảng khác không hỗ trợ ...

IMO, tùy chọn tốt hơn ở đây là tạo csproj thứ hai bao gồm các tệp .cs (hoặc lừa một ký tự đại diện/bao gồm sâu). Và xây dựng cả hai. Cùng C#, dll/nền tảng khác nhau.

Không phải là hiếm khi thấy rằng bạn cũng cần rất nhỏ cách sử dụng của #if chỉ thị.

+0

cùng một câu hỏi mà tôi đã hỏi avidgator trên – locoboy

+0

@ cfarm54 - cùng một câu trả lời ... –

1

WCF RIA Services có thể giúp bạn giải quyết vấn đề của mình. Silverlight không sử dụng cùng thời gian chạy như ASP.Net và bạn không thể trực tiếp chia sẻ các assembly có chứa các lớp mô hình trên máy khách và phía máy chủ. Để giải quyết các dịch vụ WCF RIA sẽ tạo ra các lớp một cách minh bạch trên phía máy khách dựa trên các lớp mô hình ở phía máy chủ. Rõ ràng WCF RIA Services cũng sẽ cho phép bạn tạo, đọc, cập nhật và xóa các đối tượng của các lớp này bằng cách sử dụng một dịch vụ web.

MSDN có thông tin cụ thể hơn về WCF RIA Services Client Code Generation.

+0

làm thế nào khó khăn này để tìm hiểu? – locoboy

+1

@ cfarm54: Tôi không biết làm thế nào để đo lường nó là khó khăn như thế nào, nhưng bạn có thể thử một số mẫu trên MSDN (theo liên kết của tôi) và xem cho chính mình. Nếu bạn không cần dịch vụ web thì có lẽ gợi ý của Marc Gravell trong đó các tệp nguồn được chia sẻ bằng cách sử dụng các liên kết đơn giản hơn. –

2

Dịch vụ RIA chắc chắn là cách để đi để chia sẻ mã giữa ASP.Net và Silverlight.

Cũng như mô hình dịch vụ miền đã đề cập trước đó, nó cũng cho phép bạn chia sẻ các tệp riêng lẻ giữa ứng dụng web và Silverlight bằng cách chỉ cần chèn "được chia sẻ" vào tên tệp. ví dụ. "MyClass.shared.cs".

Dịch vụ RIA không mất nhiều thời gian để có được các điều khoản (và có hướng dẫn tốt về). Try this one.

Các vấn đề liên quan