应用举例:
1、引用ExtendedFramework.Core.dll
2、设置程序集特性
[assembly: ExtendedFramework.Core.ExtendedFrameworkAttribute.Assembly(15, "Test1", new string[] { @"AppDomain\Test1" }, false, true, typeof(Test1.AppDomainAssembly))]
3、实现IAppDomainAssembly接口(这是域的启动和结束时自动调用的函数)
class AppDomainAssembly : IAppDomainAssembly
{
public CrossAppDomainDelegate StartCallBackDelegate => () => {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 frmMain = new Form1();
Application.Run(frmMain);
};
public CrossAppDomainDelegate CloseCallBackDelegate => () => {
};
}
到这一步,就已经添加到了系统中。
4、注册槽(其他模块或者本模块触发时执行的事件)
SignalSoltRegister.AddSolt("DataChangeEntity_Type", (key, item) =>
{
this.Invoke(new Action(() =>
{
this.Text = "Form1 " + i1 + " " + (++i2);
}));
});
5、创建对象,属性改变时信号发送
创建class,必须继承自FEntity<DataChangeEntity>,默认信号的key是命名空间.类型名称或者
命名空间.类型名称.属性名称,特性SignalSolt是自定义信号槽的key
[SignalSolt("DataChangeEntity")]
public class DataChangeEntity : FEntity<DataChangeEntity>
{
[SignalSolt("DataChangeEntity_Type")]
public virtual int Type { get; set; } = 0;
/// <summary>
/// 新建.
/// 固定格式.
/// </summary>
/// <returns></returns>
public static DataChangeEntity New(string objectID = null)
{
return SignalSoltNewEntity.New<DataChangeEntity>(objectID);
}
/// <summary>
/// 保存至本地.
/// 固定格式.
/// </summary>
public virtual void Save()
{
//SignalSoltNewEntity.SaveEntity<CompanyEntity>(Guid.NewGuid().ToString(), this);
//上传服务器
}
}
创建对象
dataChangeEntity = DataChangeEntity.New();
创建时 会触发key为“DataChangeEntity”的事件。
dataChangeEntity.Type = 1;
改变属性时 会触发key为“DataChangeEntity_Type”的事件。