2012-08-27 25 views
5

Tôi đã có mã dưới đây và tôi đang cố gắng để làm một số bài tập thừa kế nhưng khi tôi cố gắng chạy mã này nó mang lại cho tôi một lỗi:hỗ trợ truy cập không phù hợp: Base Class là khó tiếp cận hơn lớp

Inconsistent Accessability: Base Class is less accessible than class 

Mã:

class Program 
{ 
    static void Main() 
    { 

     FoodProducts Test = new FoodProducts(); 

     Test.Limit(); 



    } 
} 

public class FoodProducts : Products 
{ 
    public void FoodProduct() 
    { 
     Console.WriteLine("This is food product"); 
    } 

    public void Limit() 
    { 
     Console.WriteLine("This is an Attribute of a Product"); 
    } 

} 

Ai đó có thể giúp tôi?

+0

Vui lòng thêm định nghĩa lớp sản phẩm, cụ thể là dòng khai báo. Tôi đoán nó được tuyên bố là riêng tư. – Khepri

Trả lời

3

Có thể là lớp học Products không được công khai. Thêm public vào định nghĩa lớp học Products.

Nếu bạn có một cái gì đó như:

class Products { 
... 
} 

Các biên dịch C# giải thích lớp Products như nội bộ.

+0

Mức hiển thị mặc định cho các lớp là ['internal'] (http://stackoverflow.com/questions/3763612/default-visibility-for-c-sharp-classes-and-members-fields-methods-etc). –

+0

Tôi đã sửa. Cảm ơn đã chỉ ra điều đó. – Candide

12

Lỗi dòng là gì và văn bản lỗi cụ thể là gì? Ngoài ra, định nghĩa của Products ở đâu?

Có thể bạn đang nhận được CS0060: "Khả năng truy cập không phù hợp: lớp cơ sở 'class1' ít có thể truy cập hơn lớp 'class2'" Vì vậy, tôi giả sử lớp Products của bạn không được đánh dấu là public.

Sự cố này xảy ra khi lớp cơ sở được đánh dấu là một thứ khác ngoài public (ví dụ: internal), nhưng sau đó bạn cố gắng tạo một lớp có nguồn gốc public.

+3

Thật tuyệt vời để giải thích lý do tại sao điều này không được phép, tức là có gì sai với lớp công khai kế thừa từ lớp cơ sở ẩn. – dumbledad

2

Thêm chỉ thị public vào lớp bạn đang cố gắng kế thừa từ đó.

0

Điều đó xảy ra khi, ví dụ, lớp cơ sở là riêng tư, nhưng lớp dẫn xuất là công khai. Một mâu thuẫn, để nói.

0
public class Products 

Biến bạn thành lớp công khai (như được hiển thị ở trên) để sách được kế thừa hoặc có thể truy cập.

0

điều này có nghĩa là nếu bạn muốn lớp con công khai, lớp cha mẹ cũng phải được công khai.

4

Chỉ cần để tham khảo trong tương lai cho người dày như tôi, tôi nhận này trong tình hình sau đây và không thể tìm ra những gì đã xảy ra sai:

public class Foo : Base<Bar> {} <-- Inconsistent accessibility 

public class Base<T> {} 

Tôi đã mất một thời gian để làm việc ra rằng thủ phạm đã ở đây:

internal class Bar {} 
0

Một trong những lý do có thể xảy ra cho vấn đề này, bạn có nhiều hơn một lớp chính, Đảm bảo bạn chỉ có một lớp chính.

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