См. Описание ApprovedStates Enumeration
в Документах Microsoft:
... Указывает, одобрено или отклонено обновление. Эти флаги могут быть использованы для получения обновлений в указанном состоянии. ...
blockquote>Члены этого перечисления перечислены ниже:
Любой - включает все обновления, независимо от того, утверждены они, отклонены или не утверждены.
Отклонено - Включает обновления, которые были отклонены.
HasStaleUpdateApprovals - Включает в себя обновления, имеющие одобрение на редакцию, которая не является последней редакцией.
LatestRevisionApproved - Включает в себя обновления, последняя версия которых утверждена.
NotApproved - Включает обновления, которые не были утверждены или отклонены.
blockquote>Теперь вопрос о том, почему замененные обновления все еще отражаются после этого условия, заключается в том, что они не должны проверять поведение замены. Они используются для проверки состояния утверждения (утверждено, отклонено, не утверждено). Последняя редакция - это когда Microsoft продолжает обновлять / пересматривать обновление после его первоначального выпуска.
Если вы хотите определить поведение замены,
$updateinfo.IsSuperseded
- это вариант, на который можно положиться.
Вызов GetType()
от Механизма. Пойдите (), работал бы - но только если Идут (), был на самом деле назван.
Один способ осуществить это состоит в том, чтобы использовать шаблонный шаблон метода:
public abstract class Vehicle
{
public void Go()
{
Log("vehicle {0} fired", GetType().Name);
GoImpl();
}
protected abstract void GoImpl();
}
public class Car : Vehicle
{
protected override void GoImpl()
{
// do something
}
}
Ответ Jon Skeet, конечно, сделал задание, но я для каждому действительно не нравится реализация. Я предпочитаю следующее, которое сохраняет его - по-моему - простым.
Так или иначе.NET оказывает поддержку для этой функциональности уже посредством виртуальных методов.
public class Vehicle {
public virtual void Go() {
Log(this.GetType().Name);
}
}
public class Car : Vehicle {
public override void Go() {
base.Go();
// Do car specific stuff
}
}
public class Bus : Vehicle {
}
Это будет работать, обращаетесь ли Вы к экземпляру, он - базовый класс или его фактический класс. Это не вынуждает Вас изменить реализацию в основных классах и хорошо... всех других, объект ориентировал правильность.NET.
Если Вы имеете полный контроль над реализацией основы и производных классов, то эта реализация должна обслуживать Вас приятно.