2012-06-21 5 views
5

Tôi đang làm việc với một ứng dụng WPF trong C#. Tôi có một số hằng số được định nghĩa trong một lớp tĩnh như sau:Làm thế nào để truy cập vào một lớp tĩnh trong cùng một không gian tên nhưng một hội đồng khác?

Project1:

namespace MyCompany 
{ 
    public static class Constants 
    { 
     public static int MY_CONSTANT = 123456; 
    } 
} 

Sau đó, tất cả những gì cần làm để truy cập vào liên tục của tôi bất cứ nơi nào bên trong dự án 1 là:

int x = Constants.MY_CONSTANT; 

Bây giờ tôi thêm một dự án khác vào cùng một giải pháp và sử dụng cùng một không gian tên gốc:

Dự án 2

namespace MyCompany.MyControl 
{ 
    class VideoControl 
    { 
     int x; 
     x = Constants.MY_CONSTANT; //<-- doesn't work 
     x = MyCompany.Constants.MY_CONSTANT; //<-- doesn't work either 
    } 
} 

Tôi không thể tìm ra cách để truy cập lớp Constants tĩnh của tôi từ assembly thứ hai. Tôi cũng không thể thêm một tham chiếu đến assembly đầu tiên, bởi vì nó dẫn đến phụ thuộc vòng tròn (assembly thứ hai là một điều khiển WPF được sử dụng bởi assembly đầu tiên).

Là những gì tôi đang cố gắng làm thậm chí có thể? Hiện tại workaround của tôi là đi qua tất cả các hằng số cần thiết trong constructor, nhưng tôi chỉ muốn truy cập chúng trực tiếp.

+4

Bạn cần tham khảo - bạn sẽ cần phải giải quyết phụ thuộc vòng tròn của bạn - có thể di chuyển các hằng số lớp ra thành một hội đồng thứ 3 mà cả hai hội đồng khác có thể tham chiếu. – Blorgbeard

+0

bên cạnh điểm: nếu bạn muốn một hằng số, tại sao bạn không khai báo nó như là một hằng số 'public const int MY_CONSTANT = 123456;'? – Hinek

Trả lời

2

Bạn có thể di chuyển tất cả các hằng số tĩnh từ dự án 1 đến dự án 2, do đó, tất cả các hằng số được hiển thị cho cả dự án 1 và dự án 2; Tôi khuyên bạn nên giới thiệu một dự án khác (có thể phổ biến) có thể giúp quản lý tất cả các nội dung được chia sẻ bởi tất cả các dự án khác. đó là một dự án cơ sở hạ tầng chung.

+0

Tôi sẽ chấp nhận giới thiệu bản lắp ráp thứ 3 làm câu trả lời. Vì một lý do nào đó, tôi đã tìm ra miễn là tôi ở cùng một không gian tên, tôi không cần tài liệu tham khảo. – Eternal21

0

Bạn phải thêm tham chiếu trong Dự án 1 vào Dự án 2, sau đó nó sẽ hoạt động tốt. Bạn có cần đồ họa để minh họa không?

Dưới đây là một liên kết MSDN http://msdn.microsoft.com/en-us/library/wkze6zky.aspx

Và đây là một câu trả lời SO với hình ảnh>Adding projects to a project in Visual Studio 2010

+0

Project 1 là một dự án WPF sử dụng điều khiển WPF bên trong Project 2, vì vậy tôi khá chắc chắn nó đã tham khảo nó. Rất tiếc, mã của tôi đang hoạt động, vì vậy tôi sẽ không thể kiểm tra lại cho đến ngày mai. Sẽ lấy lại cho bạn sau đó. – Eternal21

+0

Cũng hơi lạ khi yêu cầu chúng tôi giúp bạn tìm ra khi bạn không thể kiểm tra nó ;-) – jcolebrand

+0

Tôi đã làm việc từ bộ nhớ, vì vấn đề đã làm tôi khó chịu ở nhà. Chỉ cần kiểm tra và có Dự án 1 không có tham chiếu đến Dự án 2. – Eternal21

0

Câu trả lời khác gần, nhưng nó thực sự là ngược lại: Dự án 2 cần một tham chiếu đến dự án 1. Mã này nên sau đó biên dịch.

EDIT:

Xin lỗi, tôi thấy rằng bạn đã coi này. Có, một người nào đó đã nhận xét để tránh một vấn đề phụ thuộc vòng tròn bằng cách giới thiệu một hội đồng thứ ba.

+0

Đối với tôi, sự khác biệt giữa "Dự án 1" và "Dự án 2" chỉ là phương hướng.Nếu anh ta đặt tên, chẳng hạn như "AutoManufacturers" và "CarDealerships", tôi có thể rõ ràng hơn. Xin đừng nhầm lẫn giữa các tên không có định hướng chung để ngụ ý ý định, nhưng hãy tìm ý định cố hữu trong ví dụ, chẳng hạn như câu hỏi được liên kết cho thấy tham chiếu một dự án từ bên trong một dự án khác. – jcolebrand

+0

Xin lỗi, đó là câu hỏi đầu tiên tôi đã hỏi trên StackOverflow và tôi đang cố gắng giữ mã càng chung càng tốt để giúp phân tích cú pháp dễ dàng hơn. Có vẻ như cuối cùng tôi đã cắt nó quá nhiều. – Eternal21

+0

Hãy thoải mái rõ ràng trong tương lai, mà không vi phạm NDA. – jcolebrand