winform如何全局调用一个外部的类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform如何全局调用一个外部的类?相关的知识,希望对你有一定的参考价值。

已经写好一个外部的工程,一个单独的namespace,负责逻辑,又创建了winform负责具体实现和操作。我现在不知道从哪里实例化外部这个类,使得可以从winform多个界面都能使用这一个类的实例。唉,感觉自己实践基础太差了,请各位大佬提点一下。 我也试过在winform里加个静态类,静态类里实例化我外部需要的类,但不知道怎么干是合理的吗

建议这样试试看:

     新建一个类库,然后将这个类放到类库中,同时将此类设置为静态类

    在窗体项目中,添加此类库的引用,在窗体后台代码中引入命名空间

    使用的时候直接类名.成员去调用

参考技术A

如果需要全局共享一个实例,那单例模式了解一下

单例模式大概是这样的:


public sealed class Singleton

    private static readonly Singleton instance = new Singleton();

    // Explicit static constructor to tell C# compiler
    // not to mark type as beforefieldinit
    static Singleton()
    
    

    private Singleton()
    
    

    public static Singleton Instance
    
        get
        
            return instance;
        
    

参考技术B 静态类是最直接的解决方法
当然是否合理,要看你具体的业务逻辑。

C#调用WPF或Winform以及控制台程序时传入参数

每个应用程序都有个Main的入口点函数

public static void Main(string[] args){...}

WPF窗体程序隐藏的Main函数。如果有的时候我们需要给WPF应用程序传递参数,我们需要自己写一个包含Main函数的类来实现,Winform以及控制台没有隐藏Main函数直接加上参数即可。

外部传递过来的参数就在string[] args里面,例如传递的参数是字符串“1 2 aabbcc”,则args的内容是args[0]="1",args[1]="2",args[2]="aabbcc",每个数组元素间是以空格分隔的。

Wpf首先定义一个Start类,这个类中必须有一个带参数的Main(string[] args)函数:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PictureView
{
    public class Start
    {
        [STAThread]
        public static void Main(string[] args) 
        {
            App app = new App();
            app.InitializeComponent();
            app.Run();
        }
    }
}

设置项目属性

添加3个启动参数进行测试,调试参数已经传递过来了

 

以上是关于winform如何全局调用一个外部的类?的主要内容,如果未能解决你的问题,请参考以下文章

C#winform 关于调用外部程序的问题

winform process.start() 调用外部EXE引用程序, 如何实现用户登录

有关C#winform的调用外部程序的问题

在Winform混合式框架中整合外部API接口的调用

如何调试从外部应用程序调用的类库?

python如何调用C++外部库中的类?