繁体   English   中英

如何从基本类中隐藏基本方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM