Как Вы “переопределяете” Внутренний Класс в C#?

Одним из способов является наличие условий в вашем возвращающем дикте:

def json(self):
        return {
            'username': self.phone if self.phone else '',
            'fullname': self.fullname if self.fullname else ''
        }
12
задан danmine 13 October 2008 в 02:08
поделиться

4 ответа

Вы могли бы найти это недавнее просвещение статьи. В основном это говорит, что Вы не можете переопределить ничего отмеченного internal, и источник является почти столь авторитетным, как это добирается. Лучше всего можно надеяться на, дополнительный метод.

9
ответ дан 2 December 2019 в 20:20
поделиться

Я полагаю, что можно использовать Отражение для обхождения модификаторов доступа на классе, поэтому возможно, можно использовать Отражение. Испустите для генерации типа, который наследовался внутреннему типу (но НЕ изолированный модификатор), хотя я не могу найти пример этого онлайн.

Это, конечно, работает на доступ к членам парламента, не занимающим официального поста классов, и вероятно для наследования незапечатанных классов. Но не помогает многому, если целевые методы уже не отмечены виртуальные.

1
ответ дан 2 December 2019 в 20:20
поделиться

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

  • Декомпилируйте и скопируйте код в Ваш собственный проект; измените по мере необходимости
  • Перекомпилируйте/исправьте блок и добавьте "InternalsVisibleToAttribute"
0
ответ дан 2 December 2019 в 20:20
поделиться

Внутреннее ключевое слово показывает, что единица кода (класс, метод, и т.д.) "общедоступна" к блоку, это находится в, но частный к любому другому блоку.

Поскольку Вы не находитесь в том же блоке, Вы ничего не можете сделать. Если бы это не было внутренним, то Вы могли бы использовать новое ключевое слово на методе, который Вы переопределяете (для сокрытия исходной реализации) при расширении класса.

Короче говоря: необходимо быть СОЛЬ.

Единственная вещь я могу думать о Вас, могла сделать, записать прокси-класс, где одно из Ваших частных полей является классом, Вы хотели бы расшириться, и Вы реализуете все, что это - методы, и проксируйте их вызовы. тем путем можно все еще настроить вывод, но необходимо было бы использовать класс и рассмотрение, что он отметил внутренний, я не уверен, что это возможно без некоторого серьезного взламывания.

using System;
...
using System.Web.Script.Services

namespace MyGreatCompany.ScriptServices 
{
    public class MyScriptHandlerFactory /* implement all the interfaces */
    {
        private ScriptHandlerFactory internalFactory;
        public MyScriptHandlerFactory()
        {
            internalFactory = new ScriptHandlerFactory();
        }
        ...
    }
}

Это могло сделать то, что Вы хотите выполнить возможный, но это не будет симпатично.

6
ответ дан 2 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: