Как я могу назвать дополнительные методы C# в коде VB

Вы можете сделать это с помощью Wordpress Rest API https://developer.wordpress.org/rest-api/ .

Затем на своем веб-сайте добавьте следующий html и JavaScript:

HTML

JavaScript (Обязательно добавьте URL-адрес вашего сайта с протоколом)

fetch('YOUR_WEBSITE/wp-json/wp/v2/posts')
  .then(function(response) {
    return response.json();
  })
 .then(function(json) {    
    json.forEach(function(post, index) {
      var para = document.createElement("P");                       
      var t = document.createTextNode(post.title.rendered);     
      para.appendChild(t);                                          
      document.getElementById("my-posts").appendChild(para);         
    })
  });

Приведенный выше код будет запрашивать сообщения и отображать их заголовки в div # my-posts. JavaScript нужно будет выполнить после HTML.

Посмотрите руководство, чтобы узнать, как получить нужные данные из API.

Удачи и удачного кодирования!

10
задан Bob King 17 October 2008 в 19:03
поделиться

8 ответов

Это работает на меня, хотя существует несколько причуд. Во-первых, я создал библиотеку классов C#, предназначающуюся для.NET 3.5. Вот единственный код в проекте:

using System;

namespace ExtensionLibrary
{
  public static class Extensions
  {
    public static string CustomExtension(this string text)
    {
      char[] chars = text.ToCharArray();
      Array.Reverse(chars);
      return new string(chars);
    }
  }
}

Затем я создал приложение консоли VB, предназначающееся для.NET 3.5, и добавил ссылку на мой проект C#. Я переименовал Module1.vb к Test.vb и здесь являюсь кодом:

Imports ExtensionLibrary

Module Test

    Sub Main()
        Console.WriteLine("Hello".CustomExtension())
    End Sub

End Module

Это компилирует и работает. (Я назвал бы Реверс метода (), но я не был уверен, мог ли VB уже волшебно иметь обратные способности где-нибудь - я не эксперт VB значительно.)

Первоначально, мне не предложили ExtensionLibrary как импорту от Intellisense. Даже после здания, "Импорт ExtensionLibrary" отображается серым, и лампочка предлагает возможность удалить, предположительно, избыточный импорт. (Выполнение так повреждает проект.) Возможно, что это - ReSharper, а не Visual Studio, заметьте.

Так, короче говоря, это может быть сделано, и это должно работать просто великолепно. Я не предполагаю, что проблема состоит в том, что Вы или используете старую версию VB или Вашего проекта, не предназначается для.NET 3.5?

Как отмечено в комментариях: существует одна дополнительная причуда, которая является, что дополнительные методы не будут найдены, когда тип времени компиляции цели будет Object.

8
ответ дан 3 December 2019 в 23:52
поделиться
Imports x.y

'...'
Dim r As String = "greg"
Dim s As String = r.q() 'same as z.q(r) 
1
ответ дан 3 December 2019 в 23:52
поделиться

Хорошо. На основе сообщения об ошибке Вы определенно не используете новую версию VB (VB 9!) или ошибка не связана с этой проблемой вообще, потому что затем Вы получили бы другую ошибку, если бы метод не был найден:

Ошибка 1 'q' не является членом 'String'.

2
ответ дан 3 December 2019 в 23:52
поделиться

Две вещи проверить:

  1. Вы нацелены на.Net 3.5
  2. Вы ссылаетесь на DLL

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

0
ответ дан 3 December 2019 в 23:52
поделиться

Это было долгое время назад, и я не могу действительно, как я решил его, но само собой разумеется, это была пользовательская ошибка. Я, вероятно, перезапустил свой компьютер, и далеко он пошел.

-1
ответ дан 3 December 2019 в 23:52
поделиться

Дополнительные методы являются просто синтаксическим сахаром для статических методов. Так

public static string MyExtMethod(this string s)

может быть назван и в VB.NET и в C# с

MyExtMethod("myArgument")
2
ответ дан 3 December 2019 в 23:52
поделиться

Я не знаю, можно ли назвать их в той же записи через точку, как Вы были бы в C#, но я буду думать, что статические дополнительные методы обнаружились бы как статические функции с аргументом кулака как расширенный тип. Таким образом, необходимо смочь звонить на самом деле класс в VB с:

StaticClass.ExtensionMethod(theString, arg1, ..., argN)

Где в C# Вы просто записали бы:

theString.ExtensionMethod(arg1, ..., argN);

Причем StaticClass является названием статического класса, в котором Вы определили свои дополнительные методы.

0
ответ дан 3 December 2019 в 23:52
поделиться

… и старый веб-сайт, записанный в VB.

“Старый” здесь подразумевают, возможно, что Вы также используете старую версию VB здесь? Так или иначе, так как дополнительные методы являются просто ванильными помехами (“Shared”) методы украсили атрибутом, необходимо смочь назвать их в любом случае.

Если это не возможно, Вы или пытаетесь назвать их “дополнительным стилем” в старой версии VB, или Вы ссылаетесь на неверную версию своего блока C#.

Править: действительно ли Вы уверены, что Вы Importлуг целое пространство имен, т.е. x.y и не просто x? VB может получить доступ к вложенным пространствам имен, легче, чем C#, таким образом, можно использовать классы от пространства имен x.y использование следующего кода в VB. Однако, чтобы дополнительные методы работали, полный путь должен быть Importредактор.

Imports x
Dim x As New y.SomeClass()
0
ответ дан 3 December 2019 в 23:52
поделиться