C# 给程序添加许可
实现许可提供程序:
using System;
using System.ComponentModel;
using System.IO;
public class MyLicenseProvider : LicenseProvider
{
public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions)
{
if (context.UsageMode == LicenseUsageMode.Designtime)
{
return new MyLicense(this, "OK");
}
else
{
string licenseFile = AppDomain.CurrentDomain.BaseDirectory + "test.lic";
if (File.Exists(licenseFile))
{
return new MyLicense(this, "OK");
}
else
{
throw new LicenseException(type);
}
}
}
}
using System.ComponentModel;
using System.IO;
public class MyLicenseProvider : LicenseProvider
{
public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions)
{
if (context.UsageMode == LicenseUsageMode.Designtime)
{
return new MyLicense(this, "OK");
}
else
{
string licenseFile = AppDomain.CurrentDomain.BaseDirectory + "test.lic";
if (File.Exists(licenseFile))
{
return new MyLicense(this, "OK");
}
else
{
throw new LicenseException(type);
}
}
}
}
许可证:
using System.ComponentModel;
public class MyLicense : License
{
private MyLicenseProvider licenseProvider;
private string licenseKey;
public MyLicense(MyLicenseProvider licenseProvider, string licenseKey)
{
this.licenseProvider = licenseProvider;
this.licenseKey = licenseKey;
}
public override string LicenseKey
{
get
{
return licenseKey;
}
}
public override void Dispose()
{
this.licenseProvider = null;
this.licenseKey = null;
}
}
public class MyLicense : License
{
private MyLicenseProvider licenseProvider;
private string licenseKey;
public MyLicense(MyLicenseProvider licenseProvider, string licenseKey)
{
this.licenseProvider = licenseProvider;
this.licenseKey = licenseKey;
}
public override string LicenseKey
{
get
{
return licenseKey;
}
}
public override void Dispose()
{
this.licenseProvider = null;
this.licenseKey = null;
}
}
给组件添加许可:
using System;
using System.ComponentModel;
[LicenseProvider(typeof(MyLicenseProvider))]
public static class Business1
{
static Business1()
{
LicenseManager.Validate(typeof(Business1), null);
}
public static string TestString = "test ok";
}
using System.ComponentModel;
[LicenseProvider(typeof(MyLicenseProvider))]
public static class Business1
{
static Business1()
{
LicenseManager.Validate(typeof(Business1), null);
}
public static string TestString = "test ok";
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2006-12-28 单线程程序避免界面假死
2006-12-28 Windows Form TreeView 上逐层加载数据