winform如何全局调用一个外部的类?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform如何全局调用一个外部的类?相关的知识,希望对你有一定的参考价值。
已经写好一个外部的工程,一个单独的namespace,负责逻辑,又创建了winform负责具体实现和操作。我现在不知道从哪里实例化外部这个类,使得可以从winform多个界面都能使用这一个类的实例。唉,感觉自己实践基础太差了,请各位大佬提点一下。 我也试过在winform里加个静态类,静态类里实例化我外部需要的类,但不知道怎么干是合理的吗
建议这样试试看:
- 新建一个类库,然后将这个类放到类库中,同时将此类设置为静态类
在窗体项目中,添加此类库的引用,在窗体后台代码中引入命名空间
使用的时候直接类名.成员去调用
如果需要全局共享一个实例,那单例模式了解一下
单例模式大概是这样的:
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如何全局调用一个外部的类?的主要内容,如果未能解决你的问题,请参考以下文章