Вопрос такой: Есть класс А он пораждает дочерний класс В, так вот? как из класса В вызвать метод класса А. Знаю, что через делегаты; прочитал много статей и примеров кода… Не помогло. Кто подскажет?
Вопрос такой: Есть класс А он пораждает дочерний класс В, так вот? как из класса В вызвать метод класса А. Знаю, что через делегаты; прочитал много статей и примеров кода… Не помогло. Кто подскажет?
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
6 августа 2008 в 16:05
Разработчик .NET Windows приложений
Уважаемые коллеги!
В группе компаний СТЭП (Санкт-Петербург), открыта вакансия «Разработчик .NET Windows приложений».
Функции:
разработка программных модулей .NET по готовому ТЗ для Корпоративной Информационной Системы (КИС) в среде Microsoft Visual Studio 2005 на языке программирования C#
Требования:
- 25-35 лет
- образование высшее техническое
- опыт работы 2 года
- английский технический желателен
- уверенное знание платформы .NET, языка программирования C#, ООП.
- опыт разработки в среде Microsoft Visual Studio 2005
- опыт и понимание Web технологий: Web Services (XML, SOAP, HTTP/HTTPS)
- опыт использования систем коллективной разработки
Условия:
- офисная работа
- з/п 40 – 50 тс. р.
- оформление по ТК
Если Вас заинтересовало наше предложение, звоните по тел. (812)633-3556, Катерина.
23 июля 2008 в 16:02
Блин, только допер, чего надо было (:
class clsA {
void method(){
…
}
void XXX(){
clsB b; //порождается B
b=new clsB(this);
…….
}
}
class clsB {
private clsA parent;//ссылка на родителя
public clsB(clsA owner){
parent=owner;
}
public void YYY() {
parent.method(); //вот
}
}
23 июля 2008 в 16:01
#12 и#13 спасибо буду пробовать)
23 июля 2008 в 15:03
Иван Августон
"класс В не наследник класса А и даже если он будет наследником, то та реализация которую ты предлагаешь все равно не катит."
Куда не катит? )
23 июля 2008 в 14:04
delegate void MethodDelegate();
class B
{
public void Execute(MethodDelegate method){ method.Invoke(); }
}
class A
{
B _b = new B();
public void Method() { Console.WriteLine("Executed: a.method()"); }
public void Execute() { _b.Execute(this.Method); }
}
class Program
{
static void Main(string[] args)
{
A a = new A();
a.Execute();
Console.ReadKey();
}
}
23 июля 2008 в 14:01
Вот так это можно сделать через событие
class A
{
Newclass B = new Newclass()
B.OnDoMethod += new DMethod(method);
public void metod()
{……….}
}
class B
{
public delegate void DMethod();
public event DMethod OnDoMethod;
private void Do()
{
if (OnDoMethod != null)
OnDoMethod();
}
}
Можно обойтись без события, но делегат все равно нужно куда-нить передавать в B.
Еще один вариант сделать у класса B свойство типа {public A parent;}, инициировать его и работать напрямую с ссылкой на класс A.
23 июля 2008 в 11:05
class A
{
public void metod()
{……….}
}
class B : A //наследование
{
//ля ля ля
//хочу вызвать метод metod() из класса А
method();//или base.method(); или this.method(); (:
}
23 июля 2008 в 11:02
А разве c# дает вызывать нестатический метод класса без экземпляра класса?
23 июля 2008 в 11:01
base.method
23 июля 2008 в 10:05
А для чего это нужно?..
23 июля 2008 в 10:05
Я про не-static метод.
23 июля 2008 в 10:03
Нет, A.metod()
23 июля 2008 в 10:02
Си# не знаю, но может быть A::method()
23 июля 2008 в 9:03
вот пример кода:
class A
{
Newclass B = new Newclass()
public void metod()
{……….}
}
class B
{
ля ля ля
хочу вызвать метод metod() из класса А
}
класс В не наследник класса А и даже если он будет наследником, то та реализация которую ты предлагаешь все равно не катит.
23 июля 2008 в 9:03
Если metod() объявлен как static, то A.metod()
Иначе, через экземпляр класса A
23 июля 2008 в 5:05
Если класс B унаследован от А, то достаточно будет нужные методы класса А обьявить как protected для использования внутри класса B, либо public если нужно обращаться к ним через экземпляры класса B.