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