if(!(child is IContainer))
- единственный оператор (нет оператора IsNot
).
Вы можете создать метод расширения, который делает это:
public static bool IsA<T>(this object obj) {
return obj is T;
}
, а затем использовать его для:
if (!child.IsA<IContainer>())
И вы можете следить за своей темой:
public static bool IsNotAFreaking<T>(this object obj) {
return !(obj is T);
}
if (child.IsNotAFreaking<IContainer>()) { // ...
Обновление (с учетом фрагмента кода OP):
Поскольку вы на самом деле приводите значение потом, вы можете просто использовать as
вместо:
public void Update(DocumentPart part) {
part.Update();
IContainer containerPart = part as IContainer;
if(containerPart == null) return;
foreach(DocumentPart child in containerPart.Children) { // omit the cast.
//...etc...