none
Deleted RRS feed

Ответы

  • Это не тавтология, а не имеющая отношения к делу информация, да еще и неверное использование термина. Все это лишь сбивает с толку и приводит к непониманию того что вы пытайтесь сделать. Я например думал что вы хотите что то вроде этого:

    this.МетодНаДругомОбъекте();

    Но я все равно не понимаю вашей задачи. Почему вы не можете указать тип? И если это будет строка, то как вам это поможет?

    Если вы хотите вызывать методы не зная типа, то для этого есть словечко dynamic:

    dynamic win = parentWin;

    win.СовершенноЧтоУгодно();

    Вызов методов при этом идет через отражения. Конечно если метода по факту нет, то возникнет исключение. Так же не будет никаких подсказок. В общем случае это надо использовать очень и очень редко. 



    This posting is provided "AS IS" with no warranties, and confers no rights.

    1 декабря 2017 г. 22:30
    Модератор

Все ответы

  • Поясните что вы имейте в виду "присоединить к существующему this" и при чем тут вообще this. Так же поясните задачу на более высоком уровне, т.е. для чего вы все это делайте.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    1 декабря 2017 г. 17:33
    Модератор
  • Для начала то что вы описывайте не имеет смысла. Вы получайте ссылку на родительское окно, а this по определению остается ссылкой на экземпляр класса в котором находится код. 

    Чтоб пояснить, this эквивалентен местоимению "я" для людей. Разумеется вы не можете использовать данное местоимение применительно к третьим лицам, оно имеет смысл только применительно к себе.

    Судя по всему вы хотите определить некие методы на всех ваших окнах? Если так то используйте либо базовый класс либо интерфейс:

    public interface ICommonWindow // Или class CommonWindow

    {

     public void CommonMethod();

    }

    public class МаinWindow : Window, ICommonWindow

    {

    ... 

     publlic void CommonMethod()

     {

       ...

     } 

    }


    var commonWindow = Owner as ICommonWindow; // Или CommonWindow если используется базовый класс.

    commonWindow.CommonMethod(); // Можно добавить проверку на null

    Если вы не это хотите то опишите что именно вам надо. Только без нонсенса с this в этот раз.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    1 декабря 2017 г. 19:24
    Модератор
  • Это не тавтология, а не имеющая отношения к делу информация, да еще и неверное использование термина. Все это лишь сбивает с толку и приводит к непониманию того что вы пытайтесь сделать. Я например думал что вы хотите что то вроде этого:

    this.МетодНаДругомОбъекте();

    Но я все равно не понимаю вашей задачи. Почему вы не можете указать тип? И если это будет строка, то как вам это поможет?

    Если вы хотите вызывать методы не зная типа, то для этого есть словечко dynamic:

    dynamic win = parentWin;

    win.СовершенноЧтоУгодно();

    Вызов методов при этом идет через отражения. Конечно если метода по факту нет, то возникнет исключение. Так же не будет никаких подсказок. В общем случае это надо использовать очень и очень редко. 



    This posting is provided "AS IS" with no warranties, and confers no rights.

    1 декабря 2017 г. 22:30
    Модератор
  • Скорее всего это совсем не то что нужно, просто затычка для неправильного дизайна результатом которого будет проблемный код. 

    Ну и что что родительских окон много? Если они все наследуют базовый класс или реализуют интерфейс это не проблема...

    Или погодите, вы думайте что всегда надо кастить к фактическому типу? 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    2 декабря 2017 г. 1:01
    Модератор
  • Это просто вызов через отражения. Примерно то же самое что делает dynamic.

    Вы неправильно предполагайте. Можно указывать так же базовые типы и интерфейсы. Все что вам надо сделать - добавить базовый класс или интерфейс и унаследовать от него. Пример я привел выше.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    2 декабря 2017 г. 2:39
    Модератор