Monday, September 27, 2010

C# Warning CS0067: The event 'event' is never used

In my current project I am using a library that is delivered to me. The API in this library provide an interface that is a bit big! The interface requires my class to implement two events as follows:

#region INotifyPropertyChanged Members
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

#region INotifyPropertyChanging Members
public event System.ComponentModel.PropertyChangingEventHandler PropertyChanging;

These two events have no meaning in my class and I just have to implement them for the sake of the interface.

As I start to compile my code I see the Warning CS0067 that indicates that my events are not used anywhere, which is true.

As usual, I don't want my code gets spoiled with warnings en I would like to sort out ALL MY WARNINGS. So I came across some options:

  • Ignoring this warnig throughout the project.

    This is too much, I don't want to avoid the benefit of getting this nice warning that just highlighted my problem. But if I would like to do so I need to put the number 0067 in the project properties page in Build tab onder the Supress warnings

  • The less wide solution would be to ignore this warning only in that file and I could do this by putting the code just before my declaration:

    #pragma warning disable 0067

    and then restore it after my declaration using
    #pragma warning restore 0067

  • The last option I just found from MSDN which seems a neat solution is to tell the compiler that I am deliberately not supporting this event and even if it would be called at runtime that would be a mistake.

    To do so I need to throw an exception as follows:
    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged
    add { throw new NotSupportedException(); }
    remove { }

    public event System.ComponentModel.PropertyChangingEventHandler PropertyChanging
    add { throw new NotSupportedException(); }
    remove { }

Monday, September 6, 2010

Windows Communication Foundation Built-In Bindings

Binding Class NameTransportMessage EncodingMessage VersionSecurity ModeReliable MessagingTransaction Flow (disabled by default)
BasicHttpBindingHTTPTextSOAP 1.1NoneNot SupportedNot Supported
WSHttpBindingHTTPTextSOAP 1.2 WS-Addressing 1.0MessageDisabledWS-AtomicTransactions
WSDualHttpBindingHTTPTextSOAP 1.2 WS-Addressing 1.0MessageEnabledWS-AtomicTransactions
WSFederationHttpBindingHTTPTextSOAP 1.2 WS-Addressing 1.0MessageDisabledWS-AtomicTransactions
NetTcpBindingTCPBinarySOAP 1.2TransportDisabledOleTransactions
NetPeerTcpBindingP2PBinarySOAP 1.2TransportNot SupportedNot Supported
NetNamedPipesBindingNamed PipesBinarySOAP 1.2TransportNot SupportedOleTransactions
NetMsmqBindingMSMQBinarySOAP 1.2MessageNot SupportedNot Supported
MsmqIntegrationBindingMSMQNot Supported (uses a pre-WCF serialization format)Not SupportedTransportNot SupportedNot Supported
CustomBindingYou DecideYou DecideYou DecideYou DecideYou DecideYou Decide