Ya, menggunakan dinamik secara amnya dianggap sebagai amalan buruk.
Seruan dinamik , diperkenalkan dalam C# 4.0, merujuk kepada jenis pengikatan lewat, di mana sistem menyemak jenis objek hanya semasa pelaksanaan, bukan kompilasi. Ini bermakna pengguna, bukan pengaturcara, bertanggungjawab untuk menemui kemungkinan ralat.
Akibat Penggunaan Dinamik:
Alternatif kepada Invokasi Dinamik:
Pertimbangkan untuk menggunakan pendekatan alternatif, seperti:
1. Panggilan Maya Antara Muka:
public interface IInvoker { void InvokeMethod(); } public abstract class MyBaseClass : IInvoker { public abstract void InvokeMethod(); } public class MyClass : MyBaseClass { public override void InvokeMethod() { /* Do something */ } } // ... ((IInvoker)myBaseClassRef).InvokeMethod();
2. Kaedah Sambungan:
public static class InvokerEx { public static void Invoke(this MyClass c) { /* Do something */ } } // ... myBaseClassRef.Invoke();
3. Corak Pelawat:
public interface IVisitor { void Visit(MyAnotherClass c); void Visit(MyClass c); } // ... IVisitor visitor = new MyVisitor(); myBaseClassRef.Accept(visitor);
4. Kaedah Generik:
public void InvokeMethod<T>(T instance) where T : IInvoker { instance.InvokeMethod(); } // ... InvokeMethod(myBaseClassRef);
Apabila Dinamik Boleh Berguna:
Dalam senario tertentu, seruan dinamik boleh memberikan faedah, seperti:
Walau bagaimanapun, kegunaan ini hendaklah ditimbang dengan teliti terhadap kemungkinan kelemahan. Dalam kebanyakan kes, pendekatan alternatif menawarkan prestasi yang lebih baik, keselamatan jenis dan kebolehselenggaraan.
Atas ialah kandungan terperinci Adakah Invocation Dinamik dalam C# adalah Amalan Buruk dan Bilakah Ia Boleh Diterima?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!