[Этюд, C#] Obsolete.
От: Aen Sidhe Россия Просто блог
Дата: 23.11.10 14:39
Оценка: 61 (4)
Доброго времени суток.

Вроде бы не было, но легко.

    public class A
    {
        [Obsolete("This member is obsolete", true)]
        public int Field1;
    }


Задача: написать компилирующийся код с использованием Field1.
Запрещается: манипулировать атрибутом Obsolete — это должен быть стандартный атрибут из BCL.
С уважением, Анатолий Попов.
ICQ: 995-908
этюд c# obsolete
Re: [Этюд, C#] Obsolete.
От: Niswn  
Дата: 23.11.10 14:47
Оценка: 2 (1)
Здравствуйте, Aen Sidhe, Вы писали:

AS>Доброго времени суток.


AS>Вроде бы не было, но легко.


AS>
AS>    public class A
AS>    {
AS>        [Obsolete("This member is obsolete", true)]
AS>        public int Field1;
AS>    }
AS>


AS>Задача: написать компилирующийся код с использованием Field1.

AS>Запрещается: манипулировать атрибутом Obsolete — это должен быть стандартный атрибут из BCL.

С dynamic подойдет?

dynamic a = new A();
a.Field1 = 500;
ICQ: 326084932
Re[2]: [Этюд, C#] Obsolete.
От: Aen Sidhe Россия Просто блог
Дата: 23.11.10 14:53
Оценка:
Здравствуйте, Niswn, Вы писали:

N>С dynamic подойдет?


N>
N>dynamic a = new A();
N>a.Field1 = 500;
N>


Не совсем. Тут проверка в рантайм уходит из-за dynamic.
С уважением, Анатолий Попов.
ICQ: 995-908
Re: [Этюд, C#] Obsolete.
От: QrystaL Украина  
Дата: 23.11.10 14:57
Оценка: 35 (4)
Здравствуйте, Aen Sidhe, Вы писали:

AS>Доброго времени суток.


AS>Вроде бы не было, но легко.


AS>
AS>    public class A
AS>    {
AS>        [Obsolete("This member is obsolete", true)]
AS>        public int Field1;
AS>    }
AS>


AS>Задача: написать компилирующийся код с использованием Field1.

AS>Запрещается: манипулировать атрибутом Obsolete — это должен быть стандартный атрибут из BCL.


    [Obsolete("This class is obsolete", true)]
    public class B
    {
        public int Field2 = new A().Field1;
    }
Re[3]: [Этюд, C#] Obsolete.
От: Niswn  
Дата: 23.11.10 15:00
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Не совсем. Тут проверка в рантайм уходит из-за dynamic.


Ну собственно проект компилится, не падает при работе (то есть эксепшенов никаких нет при записи значения 500 в Field1) и свойство Field1 используется. Что и требовалось
Ладно, раз не подходит, будем дальше думать. С dynamic действительно очень уж просто получается.
ICQ: 326084932
Re[2]: [Этюд, C#] Obsolete.
От: Aen Sidhe Россия Просто блог
Дата: 23.11.10 15:04
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>
QL>    [Obsolete("This class is obsolete", true)]
QL>    public class B
QL>    {
QL>        public int Field2 = new A().Field1;
QL>    }
QL>


Красиво У меня другой вариант. Т.е. у меня Field1 используется из не-obsolete кода.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[3]: [Этюд, C#] Obsolete.
От: nikov США http://www.linkedin.com/in/nikov
Дата: 23.11.10 15:24
Оценка: 118 (9) +1
Здравствуйте, Aen Sidhe, Вы писали:

AS>Красиво У меня другой вариант. Т.е. у меня Field1 используется из не-obsolete кода.


Способ есть, но это баг в компиляторе:

using System;

class D
{
    static void Main()
    {
        var z = new A {Field1 = 2};
    }
}

public class A
{
    [Obsolete("This member is obsolete", true)]
    public int Field1;
}
Re[4]: [Этюд, C#] Obsolete.
От: Aen Sidhe Россия Просто блог
Дата: 23.11.10 15:25
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Aen Sidhe, Вы писали:


AS>>Красиво У меня другой вариант. Т.е. у меня Field1 используется из не-obsolete кода.


N>Способ есть, но это баг в компиляторе:


Да, именно этот вариант. Самое интересное, что со свойствами работает хорошо.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[4]: [Этюд, C#] Obsolete.
От: _FRED_ Черногория
Дата: 23.11.10 15:57
Оценка:
Здравствуйте, nikov, Вы писали:

N>Способ есть, но это баг в компиляторе:


Будет ли исправляться?
Help will always be given at Hogwarts to those who ask for it.
Re[5]: [Этюд, C#] Obsolete.
От: nikov США http://www.linkedin.com/in/nikov
Дата: 23.11.10 16:23
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Будет ли исправляться?


Пока не знаю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.