![](/img/trans.png)
[英]How to hide a method, which is part of an interface implementation within a base class, from classes that derive from the base class?
[英]How to hide base method from Base Class?
我开发了一些代码进行测试。我知道:如果我使用内部方法,我们可以将我的方法隐藏在另一个名称空间中,例如:
如何在主程序中隐藏Add方法;如果我隐藏了dot(。)intellisense,请向我展示Base方法中的Add方法。 我不想看到add方法从MyClass1派生实例吗?
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); } }
}
使Add
方法protected
而不是internal
。
如果您希望从基类继承的类可以访问Add(...)
方法,但不能访问该方法的外部内容,则需要将其标记为protected
,例如:
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);
}
}
这样,只有继承自MyBaseClass
类才可以访问Add(...)
。
我认为您想使用Protected关键字而不是内部关键字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.