The signature for a C# BER memory buffer encode method is as follows:
public override int Encode (Asn1BerEncodeBuffer buffer, bool explicitTagging)
The buffer argument is a reference to an Asn1BerEncodeBuffer object that describes the buffer into which a message is being encoded. This must be created and initialized before calling any encode method. See the description of this class in the C# Run-Time Classes section for details on how this class is used.
The explicitTagging argument specifies whether or not an explicit tag should be applied to the encoded contents. The average user will almost always want to set this argument to true. The only time it would not be set to true is if a user wanted to just encode a contents field with no tag. This argument is used primarily by the compiler when generating internal calls to properly handle implicit and explicit tagging.
The return value is the length in octets of the encoded message component. Unlike the C/C++ version, a negative value is never returned to indicate an encoding failure. That is handled by the exception mechanism. All ASN1C C# exceptions are derived from the Asn1Exception base class. See the section on exceptions for a complete list and description of the various exceptions that can be thrown.