powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / base.base.Method - как вызвать?
5 сообщений из 5, страница 1 из 1
base.base.Method - как вызвать?
    #32552978
Ihor Bobak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите за примитивный вопрос (смотрите всередине MyClass.SomeVirtualMethod):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public class SuperBase
{
	protected virtual void SomeVirtualMethod()
	{
		...
	}
}

public class Base
{
	protected override void SomeVirtualMethod()
	{
		...
	}
}

public class MyClass
{
	protected override void SomeVirtualMethod()
	{
		// ЧТО ДОЛЖНО БЫТЬ ЗДЕСЬ, ЧТОБЫ ВЫЗВАТЬ SuperBase.SomeVirtualMethod?
		// НАДО ЧТО-ТО ТИПА 
		// base.base.SomeVirtualMethod()
		// но так не работает.
	}
}
...
Рейтинг: 0 / 0
base.base.Method - как вызвать?
    #32553136
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
using System;

namespace BaseBaseMethode
{
	class Class1
	{
		[STAThread]
		static void Main(string[] args)
		{
            OverBase o = new OverBase();
            o.Method1();
		}
	}

    class SuperBase 
    {
        public virtual void Method1() 
        {
            Console.WriteLine("Method 1");
        }
    }

    class Base : SuperBase 
    {
        public override void Method1()
        {
            base.Method1 ();
        }

    }

    class OverBase : Base 
    {
        public override void Method1()
        {
            base.Method1 ();
        }

    }
}

можно так сделать и метод класса SuperBase будет вызываться в Method1 класса OverBase или идея не в этом?
...
Рейтинг: 0 / 0
base.base.Method - как вызвать?
    #32553273
Ihor Bobak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идея не в этом. Все намного сложнее. Я пишу свой контрол XPImageButton, который наследует ImageButton. ImageButton наследуется от Image.

И в классе Image, и в ImageButton есть метод:

Код: plaintext
1.
2.
3.
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
....
}

Обрати внимание - protected. Теперь в моем XPImageButton надо слелать такое:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
public class XPImageButton: ImageButton
{
  protected override void AddAttributesToRender(HtmlTextWriter writer)
  {
     // некоторые свои действия
     // вызвать Image.AddAttributesToRender(), то есть base.base.AddAttributesToRender()
  }
}

НЕ надо вызывать ImageButton.AddAttributesToRender - надо перепрыгнуть через него и вызвать Image.AddAttributesToRender.

Если бы метод был public, сделал бы
Код: plaintext
1.
Image o = (Image)self;
o.AddAttributesToRender();
а так (с protected) такого делать не могу.

Конструкция base.base.AddAttributesToRender не компилируется, а копировать весь код ImageButton из Mono и порождать свой класс от Image не хочется. Единственное решение, которое я вижу - это использовать refrection, но это тоже "не красиво".

И тут я засомневался в своих знаниях C# - может как-то по нормальному можно сделать "base.base.Method()" ?
...
Рейтинг: 0 / 0
base.base.Method - как вызвать?
    #32553682
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К слову. С public методом все рано будет тоже, что с protected. Проблема в том, что они виртуальные и вызываются от типа объекта вне зависимости от типа ссылки.
...
Рейтинг: 0 / 0
base.base.Method - как вызвать?
    #32553730
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, что "красиво" никак.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / base.base.Method - как вызвать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]