Аналогии Java-вских классов в C#
От: Sorantis Швеция  
Дата: 07.03.05 11:15
Оценка:
Доброго времени суток.
У меня вопрос,есть ли аналогия джававского интерфейса PropertyChangeListener в С#?
если нет,то как можно заменить?
As long as there is life, there is hope
Re: Аналогии Java-вских классов в C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 07.03.05 11:25
Оценка:
Здравствуйте, Sorantis, Вы писали:

S>У меня вопрос,есть ли аналогия джававского интерфейса PropertyChangeListener в С#?

S>если нет,то как можно заменить?

К каждому свойству добавить событие с именем ИмяСвойстваChanged
... << RSDN@Home 1.1.4 beta 4 rev. 350>>
AVK Blog
Re[2]: Аналогии Java-вских классов в C#
От: Sorantis Швеция  
Дата: 07.03.05 11:29
Оценка:
Здравствуйте, AndrewVK, Вы писали:
AVK>К каждому свойству добавить событие с именем ИмяСвойстваChanged

если можно по-конкретнне.Я впервые сталкиваюсь с такой вещью.
И еще вопрос.Этот интерфейс разьве не ловит именения в например выборе каких то свойств?
Тогда по идее я вообще могу опустить его в моем коде.
Если не так ,то пожалуйста обьясните.
As long as there is life, there is hope
Re[3]: Аналогии Java-вских классов в C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 07.03.05 12:57
Оценка:
Здравствуйте, Sorantis, Вы писали:

S>если можно по-конкретнне.Я впервые сталкиваюсь с такой вещью.


Нельзя, поскольку сам по себе этот интерфейс или событие не особенно осмысленны. Смысл они приобретают применительно к конкретной задаче. Вот от этой самой задачи и зависит конкретика.

S>И еще вопрос.Этот интерфейс разьве не ловит именения в например выборе каких то свойств?


В Java? Нет, не ловит. Нотификацию об изменении свойст нужно писать самостоятельно.

S>Тогда по идее я вообще могу опустить его в моем коде.


Если на него не подвязана какая то логика можешь. Если подвязана — не можешь.
... << RSDN@Home 1.1.4 beta 4 rev. 350>>
AVK Blog
Re: Аналогии Java-вских классов в C#
От: TK Лес кывт.рф
Дата: 07.03.05 13:46
Оценка: 5 (1)
Hello, "Sorantis"
> У меня вопрос,есть ли аналогия джававского интерфейса PropertyChangeListener в С#?
> если нет,то как можно заменить?

Замени использованием PropertyChangedEventHandler
Posted via RSDN NNTP Server 2.0 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Аналогии Java-вских классов в C#
От: Аноним  
Дата: 07.03.05 14:49
Оценка:
> У меня вопрос,есть ли аналогия джававского интерфейса PropertyChangeListener в С#? если нет,то как можно заменить?

Судя по названию "PropertyChangeListener" вам надо перехватывать момент изменения значения свойства.

Пример позволяет перехватывать изменения свойства, но при условии, что значение свойства изменяется с помощью PropertyDescriptor.SetValue

public class MyClass
{
public string Text
{
get { return _Text; }
set
{
_Text = value;
}
}
private string _Text = null;
}

public static void Test()
{
MyClass mc = new MyClass();
PropertyDescriptor pd = TypeDescriptor.GetProperties(mc)["Text"];
pd.AddValueChanged(mc, new EventHandler(MyClassPropertyChanged));

pd.SetValue(mc, "new text");
}

public static void MyClassPropertyChanged(object sender, EventArgs e)
{
MessageBox.Show("Text changed: " + ((MyClass)sender).Text);
}



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Аналогии Java-вских классов в C#
От: Аноним  
Дата: 07.03.05 15:03
Оценка:
В FW 2.0 появился интерфейс IPropertyChange и можно забыть про PropertyDescriptor.SetValue, но надо будет вызывать OnPropertyChanged

public class MyClass : IPropertyChange
{
    public string Text
    {
        get { return _Text; }
        set
        {
            _Text = value;
            this.OnPropertyChanged("Text");
        }
    }
    private string _Text = null;
 
    public event PropertyChangedEventHandler PropertyChanged
    {
        add { _PropertyChanged = (PropertyChangedEventHandler)Delegate.Combine(_PropertyChanged, value); }
        remove { _PropertyChanged = (PropertyChangedEventHandler)Delegate.Remove(_PropertyChanged, value); }
    }
    private PropertyChangedEventHandler _PropertyChanged = null;
 
    protected virtual void OnPropertyChanged(string propName)
    {
        if (_PropertyChanged != null)
            _PropertyChanged(this, new PropertyChangedEventArgs(propName));
    }
}
 
 
public static void Test()
{
    MyClass mc = new MyClass();
    PropertyDescriptor pd = TypeDescriptor.GetProperties(mc)["Text"];
    pd.AddValueChanged(mc, new EventHandler(MyClassPropertyChanged));
 
    mc.Text = "hi";
}
 
public static void MyClassPropertyChanged(object sender, EventArgs e)
{
    MessageBox.Show("Text changed: " + ((MyClass)sender).Text);
}




данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.