Sistem. Düşünceler. Emit.MethodBuilder sınıfı
Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.
sınıfı MethodBuilder ad, öznitelikler, imza ve yöntem gövdesi dahil olmak üzere ortak ara dilde (CIL) bir yöntemi tam olarak tanımlamak için kullanılır. Çalışma zamanında sınıf oluşturmak için sınıfıyla TypeBuilder birlikte kullanılır.
Yansıma yayma kullanarak genel yöntemleri tanımlayabilir ve yöntemleri tür üyeleri olarak tanımlayabilirsiniz. Yöntemleri tanımlayan API'ler nesneleri döndürür MethodBuilder .
Genel yöntemler
Genel bir yöntem, nesnesini MethodBuilder
döndüren yöntemi kullanılarak ModuleBuilder.DefineGlobalMethod tanımlanır.
Genel yöntemler statik olmalıdır. Dinamik modül genel yöntemler içeriyorsa, ModuleBuilder.CreateGlobalFunctions ortak dil çalışma zamanı tüm genel işlevler tanımlanana kadar dinamik modülü düzeltmeyi ertelediğinden, dinamik modülü veya içeren dinamik derlemeyi kalıcı hale getirilmeden önce yönteminin çağrılması gerekir.
Genel bir yerel yöntem yöntemi kullanılarak ModuleBuilder.DefinePInvokeMethod tanımlanır. Platform çağırma (PInvoke) yöntemleri soyut veya sanal olarak bildirilmemelidir. Çalışma zamanı, platform çağırma yönteminin MethodAttributes.PinvokeImpl özniteliğini ayarlar.
Türlerin üyesi olarak yöntemler
Yöntemi, nesnesini döndüren MethodBuilder yöntemi kullanılarak TypeBuilder.DefineMethod tür üyesi olarak tanımlanır.
DefineParameter yöntemi, bir parametrenin veya dönüş değerinin ad ve parametre özniteliklerini ayarlamak için kullanılır. ParameterBuilder Bu yöntem tarafından döndürülen nesne bir parametreyi veya dönüş değerini temsil eder. ParameterBuilder nesnesi, sıralamayı ayarlamak, sabit değeri ayarlamak ve özel öznitelikleri uygulamak için kullanılabilir.
Özellikler
Numaralandırmanın MethodAttributes üyeleri dinamik yöntemin kesin karakterini tanımlar:
- Statik yöntemler özniteliği kullanılarak MethodAttributes.Static belirtilir.
- Son yöntemler (geçersiz kılınamayan yöntemler) özniteliği kullanılarak MethodAttributes.Final belirtilir.
- Sanal yöntemler özniteliği kullanılarak MethodAttributes.Virtual belirtilir.
- Soyut yöntemler özniteliği kullanılarak MethodAttributes.Abstract belirtilir.
- Çeşitli öznitelikler yöntem görünürlüğünü belirler. Numaralandırmanın açıklamasına MethodAttributes bakın.
- Aşırı yüklenmiş işleçler uygulayan yöntemlerin özniteliğini ayarlaması MethodAttributes.SpecialName gerekir.
- Sonlandırıcılar özniteliği ayarlamalıdır MethodAttributes.SpecialName .
Bilinen sorunlar
- öğesinden türetilmiş olsa MethodBuilder da, sınıfında MethodInfo tanımlanan soyut yöntemlerden bazıları içinde MethodBuildertam olarak uygulanmaz.MethodInfo Bu MethodBuilder yöntemler oluşturur NotSupportedException. Örneğin MethodBuilder.Invoke , yöntemi tam olarak uygulanmaz. veya Assembly.GetType yöntemlerini kullanarak kapsayan türü alarak bu yöntemlere Type.GetType yansıtabilirsiniz.
- Özel değiştiriciler desteklenir.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin