Tôi đã triển khai một lớp đơn và tiếp tục nhận được cảnh báo rằng phương pháp tôi viết là 'thành viên được bảo vệ mới được khai báo trong lớp con dấu'. Nó không ảnh hưởng đến việc xây dựng nhưng tôi không thực sự muốn bỏ qua các cảnh báo trong trường hợp nó gây ra vấn đề sau này? Tôi hiểu một lớp niêm phong là một lớp mà không thể được thừa kế - vì vậy nó không thể được ghi đè, nhưng tôi vẫn không hiểu tại sao đoạn mã sau sẽ cho tôi cảnh báo (là do sử dụng thiết kế singleton?):'Thành viên được bảo vệ trong cảnh báo lớp kín' (một lớp đơn)
namespace WPFSurfaceApp
{
public sealed class PresentationManager
{
PresentationManager()
{
}
protected void MethodName()
{
}
public static PresentationManager Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly PresentationManager instance = new PresentationManager();
}
}
EDIT: Cảnh báo liên quan đến phương thức MethodName(). CHỈNH SỬA: Thay đổi khoảng trống công cộng MethodName() thành void MethodName được bảo vệ()
điều gì sẽ xảy ra nếu bạn tạo lớp 'Nested' là riêng tư? –
Tôi không thấy bất cứ điều gì được bảo vệ ở đó ... –
Không có gì xảy ra, cảnh báo vẫn còn ở đó. Tôi nghĩ rằng thành thật mà nói, nó sẽ không liên quan gì đến thiết kế singleton - nó liên quan nhiều hơn với lớp kín so với modifier truy cập nhưng tôi nghĩ tôi sẽ đề cập đến nó và bao gồm cả mã lớp lồng nhau. –