Как скрыть базовый метод от базового класса? - PullRequest
1 голос
/ 10 декабря 2011

Я разработал некоторые коды для тестирования. Я знаю: если я использую внутренний метод, мы можем скрыть мой метод в другом примере пространства имен:

public против внутренних методов внутреннего класса

как скрыть метод Add в основной программе, если я нажму точку (.), Intellisense покажи мне метод Add в базовом методе.я не хочу видеть метод add для получения экземпляра из MyClass1?


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyDb;</p>

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

<p>namespace MyDb
{</p>

<pre><code>public  abstract class MyBaseClass
{
    private Dictionary&#60;string, string&#62; 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);
    }
}

}

Ответы [ 3 ]

4 голосов
/ 10 декабря 2011

Сделайте метод Add protected вместо internal.

3 голосов
/ 10 декабря 2011

Если вы хотите, чтобы классы, унаследованные от вашего базового класса, имели доступ к методу 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(...).

0 голосов
/ 10 декабря 2011

Я думаю, что вы хотите использовать защищенное ключевое слово вместо внутреннего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...