C# 开发架构

软件工程就行建筑工程一样,先架构好钢筋,如:接口、抽象类、抽象函数、虚函数、委托等,然后再加水泥,如:实例类、实现类等

抽象类实现

public partial class Window1 : Window
{
    internal static IRtcEngine Rtc;
    public Window1()
    {
        InitializeComponent();
        Rtc = RtcEngine.CreateRtcEngine();
        Rtc.InitEventHandler(new MyEventHandler());
    }
 
}
//主程序接口
public abstract class IRtcEngine
{
    public abstract void InitEventHandler(IRtcEngineEventHandler engineEventHandler);
}
 
//主程序实现
public sealed class RtcEngine : IRtcEngine
{
    //接口初始化
    private static readonly RtcEngine[] instance = { null, null };
    public static IRtcEngine CreateRtcEngine()
    {
        return instance[0] ?? (instance[0] = new RtcEngine());
    }
 
    //事件接口初始化
    public override void InitEventHandler(IRtcEngineEventHandler engineEventHandler)
    {
        RtcEngineEventHandlerNative.EngineEventHandlerArr[0] = engineEventHandler;
    }
 
}
 
internal static class RtcEngineEventHandlerNative
{
    internal static IRtcEngineEventHandler[] EngineEventHandlerArr = { null, null };
    internal static void OnEvent(string @event, string data)
    {
 
    }
}
 
//事件接口
public abstract class IRtcEngineEventHandler
{
    public virtual void OnWarning(int warn, string msg)
    {
    }
 
    public virtual void OnError(int err, string msg)
    {
    }
}
 
//事件实现
internal class MyEventHandler : IRtcEngineEventHandler
{
    public override void OnWarning(int warn, string msg)
    {
        Console.WriteLine("OnOnWarning");
    }
 
    public override void OnError(int err, string msg)
    {
        Console.WriteLine("OnOnError");
    }
}

  

posted @   microsoft-zhcn  阅读(387)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示