Энергозависимый эквивалент в VB.NET [дубликат]

Я не думаю, что это - лучшая практика.

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

, Если Вы действительно хотите управлять своей реализацией метода, у Вас есть опция:

  • Реализация его как метод в абстрактном классе, и наследовались этому. Необходимо будет все еще наследовать его в реальный класс, но Вы уверены что, если это явно не переопределяется, что метод сделает ту корректную вещь.
  • В.NET 3.5/C# 3.0, реализовывая метод как дополнительную ссылку метода против Интерфейса

Пример:

public static ReturnType MethodName (this IMyinterface myImplementation, SomeObject someParameter)
{
    //method body goes here
}

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

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

1 ответ

В VB.NET нет эквивалента изменчивому ключевому слову C #. Volatile в C # просто гарантирует, что компилятор обрабатывает вещи по-другому при генерации IL, но компилятор VB.NET не имеет этой опции.

Вы можете обойти это таким способом ( взято из этого сообщения в блоге ):

Function VolatileRead(Of T)(ByRef Address As T) As T
    VolatileRead = Address
    Threading.Thread.MemoryBarrier()
End Function

Sub VolatileWrite(Of T)(ByRef Address As T, ByVal Value As T)
    Threading.Thread.MemoryBarrier()
    Address = Value
End Sub
14
ответ дан 1 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

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