当前位置: 首页 > wzjs >正文

网站名称是网址吗青岛网站建设迅优

网站名称是网址吗,青岛网站建设迅优,青岛营销型网站,天津塘沽爆炸事件1.扩展方法: 扩展方法允许向现有类型 “添加” 方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像实例方法一样进行调用。 使用场景: 1.当无法修改某个类的源代码&#…

1.扩展方法:

扩展方法允许向现有类型 “添加” 方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像实例方法一样进行调用。

使用场景:

1.当无法修改某个类的源代码,但又希望为该类添加一些实用方法时,扩展方法就非常有用。
2.为第三方库中的类型添加额外的功能。

实现:

1.基础实现

public class ExtensionTest : MonoBehaviour
{void Start(){MyClass obj = new MyClass(5);// 可以像调用实例方法一样调用扩展方法int result = obj.DoubleValue();Debug.Log($"Double value: {result}");}
}// 定义一个简单的类
public class MyClass
{public int Value { get; set; }public MyClass(int value){Value = value;}
}// 扩展方法必须定义在静态类中
public static class MyClassExtensions
{// 扩展方法必须是静态方法,且第一个参数使用 this 关键字指定要扩展的类型public static int DoubleValue(this MyClass myClass){return myClass.Value * 2;}
}

 结果:

2.链式扩展

public class ExtensionTest : MonoBehaviour
{void Start(){Person person = new Person("John", 25);// 链式调用扩展方法person.SetName("Alice").SetAge(30).PrintInfo();}
}// 定义一个简单的类
public class Person
{public string Name { get; set; }public int Age { get; set; }public Person(string name, int age){Name = name;Age = age;}public void PrintInfo(){Debug.Log($"Name: {Name}, Age: {Age}");}
}// 扩展方法类
public static class PersonExtensions
{// 扩展方法:设置姓名public static Person SetName(this Person person, string name){person.Name = name;return person;}// 扩展方法:设置年龄public static Person SetAge(this Person person, int age){person.Age = age;return person;}
}

结果:

 

2.钩子机制:

在 C# 中,钩子通常指的是在程序执行过程中预留的一些 “可插入点”,允许开发者在特定的时机插入自定义的逻辑。常见的实现方式有事件(Event)、抽象方法、委托等

使用场景:

1.当你需要在某个操作的前后执行自定义逻辑时,可以使用钩子。
2.实现插件化架构,允许开发者在系统的某些关键位置插入自定义的功能。

实现:

1.虚方法钩子:基类定义一个虚方法,该方法可以包含默认的实现逻辑,也可以为空。派生类重写这个虚方法,在其中添加自定义的逻辑。基类在执行某个算法时,会调用这个虚方法,这样派生类就可以在这个 “钩子点” 上插入自己的代码。

public class HookTest : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){// 创建魔法师角色GameCharacter mage = new Mage();mage.Attack();Console.WriteLine();// 创建战士角色GameCharacter warrior = new Warrior();warrior.Attack();}
}public class HookTest : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){// 创建魔法师角色GameCharacter mage = new Mage();mage.Attack();Console.WriteLine();// 创建战士角色GameCharacter warrior = new Warrior();warrior.Attack();}
}// 基类:游戏角色
public class GameCharacter
{// 虚方法,作为钩子public virtual void SpecialAbility(){Debug.Log("No special ability.");}// 角色的攻击方法,会调用钩子方法public void Attack(){Debug.Log("Character attacks!");SpecialAbility();}
}// 派生类:魔法师
public class Mage : GameCharacter
{// 重写虚方法,添加自定义逻辑public override void SpecialAbility(){Debug.Log("Mage casts a fireball!");}
}// 派生类:战士
public class Warrior : GameCharacter
{// 重写虚方法,添加自定义逻辑public override void SpecialAbility(){Debug.Log("Warrior uses a powerful shield bash!");}
}

结果:

2.事件钩子​:

public class HookTest : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){MyProcessor processor = new MyProcessor();// 订阅事件,插入自定义逻辑processor.BeforeProcess += (sender, e) =>{Debug.Log("Before process: Custom logic executed.");};processor.AfterProcess += (sender, e) =>{Debug.Log("After process: Custom logic executed.");};processor.Process();}
}// 定义一个包含钩子的类
public class MyProcessor
{// 定义事件,作为钩子public event EventHandler BeforeProcess;public event EventHandler AfterProcess;public void Process(){// 在处理前触发事件BeforeProcess?.Invoke(this, EventArgs.Empty);Debug.Log("Processing...");// 在处理后触发事件AfterProcess?.Invoke(this, EventArgs.Empty);}
}

结果:

总结:

通过合理使用扩展方法和钩子方法,可以在保持外观模式简洁性的同时,提供强大的扩展能力。
1.扩展方法​​适合添加​​横向功能​​(如日志、监控)。
​2.​虚方法钩子​​适合调整​​核心流程​​
​​3.事件机制​​适合实现​​观察者模式​​的松散耦合
4.优先选择​​组合​​而非多层继承


文章转载自:

http://1Cnb4SZk.gpryk.cn
http://dTt2NW4O.gpryk.cn
http://9vzzSxeu.gpryk.cn
http://qbHMBFu5.gpryk.cn
http://6kL67vH3.gpryk.cn
http://BLabtaQL.gpryk.cn
http://jiWNQ9ig.gpryk.cn
http://WpThxpOH.gpryk.cn
http://vY35Pzb3.gpryk.cn
http://a61bnimC.gpryk.cn
http://NHZR5jRN.gpryk.cn
http://VqY9QHLw.gpryk.cn
http://4mZkPtoG.gpryk.cn
http://GK4iug7u.gpryk.cn
http://UVJQVu1X.gpryk.cn
http://RjjfC1c5.gpryk.cn
http://3MDORHAc.gpryk.cn
http://t7vUirNL.gpryk.cn
http://upC00OgL.gpryk.cn
http://OAfdoQ3h.gpryk.cn
http://lbcAnRlz.gpryk.cn
http://HvCmMAL7.gpryk.cn
http://YwzaXVow.gpryk.cn
http://tykB6bVv.gpryk.cn
http://o2e9MLL3.gpryk.cn
http://Pw4oZiji.gpryk.cn
http://YjV9Kjkf.gpryk.cn
http://mUkAY93b.gpryk.cn
http://o1J3B88H.gpryk.cn
http://NT8nuI9n.gpryk.cn
http://www.dtcms.com/wzjs/742001.html

相关文章:

  • 上海电信网站备案河南省新闻头条最新消息
  • 模特公司网站模板马鞍山网站制作公司
  • 贵州省住房和城乡建设厅网站邯郸网站设计招聘
  • 网站后台改免费注册网页网址
  • 做网站后期为什么续费it外包行业
  • 网站开发的问题有哪些vps可以做多少网站
  • 电商网站前端源码广州货运网站建设
  • 微同步网站网络管理软件免费
  • 南通网站排名优化公司开通企业网站
  • 好大夫在线个人网站王建设wordpress论坛程序
  • 泰国金木棉做网站网站免费域名注册
  • 网站公司做网站修改会收费吗app网站样式
  • 常州企业建站系统模板做捕鱼网站电话
  • 邢台开发区网站河东集团网站建设
  • wordpress站外连接申请域名后怎样做网站
  • 中国建设银行汕头支行网站成都专业建站公司
  • 公司官方网站建设申请帝国cms小说网站模板
  • 合肥制作网站的公司中国建设银行贵州分行网站
  • 外贸电商网站模板大型 网站的建设 阶段
  • 住房和城乡建设部执法网站济南WordPress培训
  • 微信网站建设定制销售管理系统下载
  • html5网站欣赏 国内网站模板工具
  • 做背景图获取网站iis 添加网站
  • 云南网站建设首选才力网站微信支付怎么做
  • 摄影作品欣赏网站西安建站系统
  • 品牌大全网站源码黄江网站建设公司
  • 龙港 网站建设深圳ui设计培训班
  • 品牌网站建设 细致磐石网络四川建设网证书查询
  • 网站站群建设怎么查网站做百度竞价信息
  • 网站开发课程改革wordpress娱乐网