Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / base.base.Method - как вызвать? / 5 сообщений из 5, страница 1 из 1
08.06.2004, 17:49
    #32552978
Ihor Bobak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
base.base.Method - как вызвать?
Простите за примитивный вопрос (смотрите всередине 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
08.06.2004, 19:28
    #32553136
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
base.base.Method - как вызвать?
Код: 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
08.06.2004, 22:40
    #32553273
Ihor Bobak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
base.base.Method - как вызвать?
Идея не в этом. Все намного сложнее. Я пишу свой контрол 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
09.06.2004, 10:54
    #32553682
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
base.base.Method - как вызвать?
К слову. С public методом все рано будет тоже, что с protected. Проблема в том, что они виртуальные и вызываются от типа объекта вне зависимости от типа ссылки.
...
Рейтинг: 0 / 0
09.06.2004, 11:12
    #32553730
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
base.base.Method - как вызвать?
Похоже, что "красиво" никак.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / base.base.Method - как вызвать? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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