private BlobHandle GetFieldSignatureBlobHandle(FieldDesc field)
        {
            var fieldDef        = field.GetTypicalFieldDefinition();
            var embeddedSigData = field.GetEmbeddedSignatureData();
            EmbeddedSignatureDataEmitter signatureDataEmitter;

            if (embeddedSigData != null && embeddedSigData.Length != 0)
            {
                signatureDataEmitter = new EmbeddedSignatureDataEmitter(embeddedSigData, this);
            }
            else
            {
                signatureDataEmitter = EmbeddedSignatureDataEmitter.EmptySingleton;
            }

            BlobBuilder memberRefSig = new BlobBuilder();

            EncodeFieldSignature(memberRefSig, field.FieldType, signatureDataEmitter);

            if (!signatureDataEmitter.Complete)
            {
                throw new ArgumentException();
            }

            var sigBlob = _metadataBuilder.GetOrAddBlob(memberRefSig);

            return(sigBlob);
        }
Пример #2
0
 public override EmbeddedSignatureData[] GetEmbeddedSignatureData()
 {
     return(_fieldDef.GetEmbeddedSignatureData());
 }