Как Вы пишете Дополнительный Метод C# для В общем Введенного Класса

ax.plot_surface(alpha, beta, energy, cstride=1, rstride=1, cmap='summer', vmin=energy.min(), vmax=energy.max())

Обратите внимание на параметры cstride и rstride.

Документация Axes3D.plot_surface .

9
задан Community 23 May 2017 в 12:31
поделиться

6 ответов

Мне не установили VS на моей текущей машине, но я думаю, что синтаксис был бы:

namespace System.Web.Mvc
{
    public static class ViewPageExtensions
    {
        public static string GetDefaultPageTitle<T>(this ViewPage<T> v)
        {
            return "";
        }
    }
}
17
ответ дан 4 December 2019 в 07:24
поделиться

Спасибо leddt. Выполнение, который привел к ошибке:

Тип 'TModel' должен быть ссылочным типом для использования его в качестве параметра 'TModel' в универсальном типе или методе

который указал на меня на эту страницу, которая привела к этому решению:

namespace System.Web.Mvc
{
    public static class ViewPageExtensions
    {
        public static string GetDefaultPageTitle<T>(this ViewPage<T> v) 
          where T : class
        {
            return "";
        }
    }
}
5
ответ дан 4 December 2019 в 07:24
поделиться

Этому просто нужен универсальный спецификатор типа на функции:

namespace System.Web.Mvc
{
    public static class ViewPageExtensions
    {
        public static string GetDefaultPageTitle<Type>(this ViewPage<Type> v)
        {
            return "";
        }
    }
}

Править: Просто пропущенный это к секундам!

3
ответ дан 4 December 2019 в 07:24
поделиться

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

что-то как...

public static string GetDefaultPageTitle(this ViewPage<YourSpecificType> v)
{
  ...
}

Обратите внимание, что intellisense затем только отобразит дополнительный метод, когда Вы объявите Ваш (в этом случае) ViewPage с типом соответствия.

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

1
ответ дан 4 December 2019 в 07:24
поделиться
namespace System.Web.Mvc
{
    public static class ViewPageExtensions
    {
        public static string GetDefaultPageTitle<T>(this ViewPage<T> view)
            where T : class
        {
            return "";
        }
    }
}

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

2
ответ дан 4 December 2019 в 07:24
поделиться

У Glenn Block есть хороший пример реализации a ForEach дополнительный метод к IEnumerable<T>.

От его сообщения в блоге:

public static class IEnumerableUtils
{
    public static void ForEach<T>(this IEnumerable<T> collection, Action<T> action)
    {
        foreach(T item in collection)
            action(item);
    }
}
1
ответ дан 4 December 2019 в 07:24
поделиться
Другие вопросы по тегам:

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