C# 如何对基类隐藏基类方法?

C# 如何对基类隐藏基类方法?,c#,.net,oop,design-patterns,C#,.net,Oop,Design Patterns,我开发了一些代码进行测试。我知道:如果我使用内部方法,我们可以将我的方法隐藏在另一个命名空间中例如: 如何在主程序中隐藏Add方法;如果我按下点(.)intellisense,请在基本方法中显示Add方法。我不想看到add方法从MyClass1派生实例 } 如果希望从基类继承的类能够访问Add(…)方法,但除此之外没有其他方法,则需要将其标记为受保护的,例如: 公共抽象类MyBaseClass { 专用字典dic{get;set;} 公共MyBaseClass() { } 受保护的空添加(字

我开发了一些代码进行测试。我知道:如果我使用内部方法,我们可以将我的方法隐藏在另一个命名空间中例如:

如何在主程序中隐藏Add方法;如果我按下点(.)intellisense,请在基本方法中显示Add方法。我不想看到add方法从MyClass1派生实例

}


如果希望从基类继承的类能够访问
Add(…)
方法,但除此之外没有其他方法,则需要将其标记为受保护的
,例如:

公共抽象类MyBaseClass
{
专用字典dic{get;set;}
公共MyBaseClass()
{
}
受保护的空添加(字符串键、字符串值)
{
添加(键、值);
}
}
公共类MyClass1:MyBaseClass
{
公共MyClass1()
:base()
{
}
public void Save(字符串TCKimlikNo,字符串AdSoyAd)
{
添加(TCKimlikNo,AdSoyAd);
}
}

这样,只有从
MyBaseClass
继承的类才能访问
Add(…)

如果您希望从基类继承的类能够访问
Add(…)
方法,但除此之外没有其他方法,则需要将其标记为
protected
,例如:

公共抽象类MyBaseClass
{
专用字典dic{get;set;}
公共MyBaseClass()
{
}
受保护的空添加(字符串键、字符串值)
{
添加(键、值);
}
}
公共类MyClass1:MyBaseClass
{
公共MyClass1()
:base()
{
}
public void Save(字符串TCKimlikNo,字符串AdSoyAd)
{
添加(TCKimlikNo,AdSoyAd);
}
}

这样,只有从
MyBaseClass
继承的类才能访问
Add(…)

使
Add
方法代替
内部

使用
Add
方法代替
internal

我认为您希望使用受保护的关键字而不是内部。

我认为您希望使用受保护的关键字而不是内部。

内部用于程序集而不是命名空间!内部用于程序集,而不是命名空间!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyDb;

namespace BaseClassUygulamasi { class Program { static void Main(string[] args) { new MyClass1().Save("123456789", "ali.yilmaz"); } } }

namespace MyDb {

public  abstract class MyBaseClass
{
    private Dictionary<string, string> dic { get; set; }

    public MyBaseClass()
    {

    }

    internal void Add(string key, string value)
    {
        dic.Add(key, value);
    }
}


public class MyClass1 : MyBaseClass
{
    public MyClass1()
        : base()
    {

    }

    public void Save(string TCKimlikNo, string AdSoyAd)
    {
        base.Add(TCKimlikNo, AdSoyAd);
    }
}
public  abstract class MyBaseClass
{
    private Dictionary<string, string> dic { get; set; }

    public MyBaseClass()
    {

    }

    protected void Add(string key, string value)
    {
        dic.Add(key, value);
    }
}


public class MyClass1 : MyBaseClass
{
    public MyClass1()
        : base()
    {

    }

    public void Save(string TCKimlikNo, string AdSoyAd)
    {
        base.Add(TCKimlikNo, AdSoyAd);
    }
}