Net Reflection Extension Metodlar ve Özel Durumlarla Çalışma
2023-05-05
Reflection, çalışma zamanında extension metodlar ve özel durumlarla işlem yapmak için kullanılabilir. Bu makalede, Reflection ile extension metodları ve özel durumları nasıl kullanabileceğinizi inceleyeceğiz.
Extension Metodlarla Çalışma
- Extension Metodları Bulma Belirli bir tür için extension metodları bulmak için, derlemedeki tüm türleri inceleyin ve ‘MethodInfo.IsDefined()’ ile ‘ExtensionAttribute’ kontrolünü kullanarak extension metodları filtreleyin.
Type extendedType = typeof(MyClass);
Assembly assembly = Assembly.GetExecutingAssembly();
var extensionMethods = assembly.GetTypes()
.SelectMany(type => type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic))
.Where(method => method.IsDefined(typeof(ExtensionAttribute), inherit: false))
.Where(method => method.GetParameters()[0].ParameterType == extendedType)
.ToList();
- Extension Metodlarını Çağırma Extension metodları, ‘MethodInfo.Invoke()’ kullanarak çağırılabilir, ancak dikkate almanız gereken önemli bir nokta, extension metodunun ilk parametresinin genişletilen türün örneği olmasıdır.
MyClass instance = new MyClass();
MethodInfo extensionMethod = extensionMethods.First();
object result = extensionMethod.Invoke(null, new object[] { instance, arg1, arg2 });
Özel Durumlarla Çalışma
- Özel Durumları Elde Etme Belirli bir türün özel durumlarını elde etmek için, ‘Type.GetNestedType()’ ve ‘Type.GetNestedTypes()’ metodlarını kullanabilirsiniz.
Type myType = typeof(MyClass);
Type nestedType = myType.GetNestedType("MyNestedClass");
Type[] nestedTypes = myType.GetNestedTypes();
- Özel Durumların Örneklerini Oluşturma Özel durumların örneklerini dinamik olarak oluşturmak için ‘Activator.CreateInstance()’ metodunu kullanın.
object instance = Activator.CreateInstance(nestedType);
Bu makalede, Reflection ile extension metodlar ve özel durumlarla çalışmayı ele aldık. Extension metodlarının nasıl bulunacağını ve çağrılacağını, ayrıca özel durumların nasıl elde edileceğini ve örneklerinin nasıl oluşturulacağını inceledik.