BlobEncoder.MethodSignature メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
メソッド シグネチャ BLOB をエンコードします。
public System.Reflection.Metadata.Ecma335.MethodSignatureEncoder MethodSignature (System.Reflection.Metadata.SignatureCallingConvention convention = System.Reflection.Metadata.SignatureCallingConvention.Default, int genericParameterCount = 0, bool isInstanceMethod = false);
member this.MethodSignature : System.Reflection.Metadata.SignatureCallingConvention * int * bool -> System.Reflection.Metadata.Ecma335.MethodSignatureEncoder
Public Function MethodSignature (Optional convention As SignatureCallingConvention = System.Reflection.Metadata.SignatureCallingConvention.Default, Optional genericParameterCount As Integer = 0, Optional isInstanceMethod As Boolean = false) As MethodSignatureEncoder
パラメーター
- convention
- SignatureCallingConvention
呼び出し規則。
- genericParameterCount
- Int32
ジェネリック パラメーターの数。
- isInstanceMethod
- Boolean
インスタンス メソッド シグネチャをエンコードする場合は true
、静的メソッド シグネチャをエンコードする場合は false
。
戻り値
戻り値とパラメーターを含む、シグネチャの残りの部分のエンコーダー。
例外
genericParameterCount
が [0, 0xffff] の範囲内ではありません。
例
この例では、さまざまなメソッド シグネチャをエンコードする方法を示します。
static BlobBuilder EncodeMethodSignatureParameterless()
{
// void Method()
var methodSignature = new BlobBuilder();
new BlobEncoder(methodSignature).
MethodSignature().
Parameters(0, returnType => returnType.Void(), parameters => { });
return methodSignature;
}
static BlobBuilder EncodeMethodSignaturePrimitiveTypes()
{
// double Method(double x, double y)
var methodSignature = new BlobBuilder();
new BlobEncoder(methodSignature).
MethodSignature().
Parameters(2, returnType => returnType.Type().Double(),
parameters => {
parameters.AddParameter().Type().Double();
parameters.AddParameter().Type().Double();
});
return methodSignature;
}
static BlobBuilder EncodeMethodSignatureClassType(MetadataBuilder metadataBuilder)
{
// void Method(System.Threading.Thread x)
var methodSignature = new BlobBuilder();
AssemblyReferenceHandle mscorlibAssemblyRef = metadataBuilder.AddAssemblyReference(
name: metadataBuilder.GetOrAddString("System.Threading.Thread"),
version: new Version(4, 0, 0, 0),
culture: default(StringHandle),
publicKeyOrToken: default(BlobHandle),
flags: default(AssemblyFlags),
hashValue: default(BlobHandle));
TypeReferenceHandle typeRef = metadataBuilder.AddTypeReference(
mscorlibAssemblyRef,
metadataBuilder.GetOrAddString("System.Threading"),
metadataBuilder.GetOrAddString("Thread"));
new BlobEncoder(methodSignature).
MethodSignature().
Parameters(1, returnType => returnType.Void(),
parameters => {
parameters.AddParameter().Type().Type(typeRef, false);
});
return methodSignature;
}
static BlobBuilder EncodeMethodSignatureModifiedTypes()
{
// void Method(ref int x, int[] y)
var methodSignature = new BlobBuilder();
new BlobEncoder(methodSignature).
MethodSignature().
Parameters(2, returnType => returnType.Void(),
parameters => {
parameters.AddParameter().Type(isByRef: true).Int32();
parameters.AddParameter().Type().SZArray().Int32();
});
return methodSignature;
}
public static BlobBuilder EncodeMethodSignatureGeneric()
{
// void Method<T>(T x)
var methodSignature = new BlobBuilder();
new BlobEncoder(methodSignature).
MethodSignature(genericParameterCount: 1).
Parameters(1, returnType => returnType.Void(),
parameters => {
parameters.AddParameter().Type().GenericMethodTypeParameter(0);
});
return methodSignature;
}
注釈
メソッド シグネチャ BLOB は、.NET メタデータでメソッドを定義または参照するときに使用されます。 メソッド定義を出力する完全な例については、クラスの解説を MetadataBuilder 参照してください。
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET