网站开发需有没有著作权龙岗门户
2026/3/27 10:40:50 网站建设 项目流程
网站开发需有没有著作权,龙岗门户,平面设计培训学校一年学费,兰州商城网站建设C#是静态类型语言#xff0c;泛型参数在编译时必须确定#xff0c;不能直接使用一个字符串来指定泛型参数#xff0c;可以通过反射或者缓存打开窗口的委托来调用泛型方法。​​​​​​​​​​​​​​​​​​​​​​​​​​​​准备#xff1a;准备几个测试供后续使用…C#是静态类型语言泛型参数在编译时必须确定不能直接使用一个字符串来指定泛型参数可以通过反射或者缓存打开窗口的委托来调用泛型方法。​​​​​​​​​​​​​​​​​​​​​​​​​​​​准备准备几个测试供后续使用代码如下public class Animal { public virtual void Print() { } } public class Dog : Animal { public override void Print() { Debug.Log(这是一只狗); } } public class Duck : Animal { public override void Print() { Debug.Log(这是一只鸭子); } } public class Test : MonoBehaviour { void Start() { } public void SummonAnimalT() where T : Animal,new() { T animal new T(); animal.Print(); } }方案一代码如下public void CallAnimalByName(string animalClassName) { // 获取程序集中的类型 var type Assembly.GetExecutingAssembly() .GetTypes() .FirstOrDefault(t t.Name animalClassName t.IsSubclassOf(typeof(Animal))); if (type ! null) { // 通过反射调用泛型方法 var method typeof(Test).GetMethod(SummonAnimal); var genericMethod method.MakeGenericMethod(type); genericMethod.Invoke(this, null); } }在Test的Start方法中调用void Start() { CallAnimalByName(Dog); }结果方案二代码如下private Dictionarystring, Action animalActions new Dictionarystring, Action(); // 注册窗口类型 public void RegisterWindowT() where T : Animal, new() { string animalName typeof(T).Name; animalActions[animalName] () SummonAnimalT(); } // 通过配置调用 public void CallAnimalByName2(string animalName) { if (animalActions.TryGetValue(animalName, out Action action)) { action(); } }在Test的Start方法中调用void Start() { RegisterWindowDuck(); CallAnimalByName2(Duck); }结果​​​​​​​

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询