-
Notifications
You must be signed in to change notification settings - Fork 216
zh_CN_OpenFx_Extension_Attributes
当你问出这个问题时,代表你需要补课了,这是C#基础知识
用于标明拓展模块的信息 或是提供实例创建前的检测用切面
显然,这个特性是被用来标记拓展模块名称的
//秋之盒将认为该拓展模块的中文名为:示例模块
[ExtName("示例模块")]
public class ExampleExt : AutumnBoxExtension{
...
}
显然,这个特性是被用来标记拓展模块所有者的
//现在,这个模块是我的了!
[ExtAuth("zsh2401")]
public class ExampleExt : AutumnBoxExtension{
...
}
显然,这个特性的内容是拓展模块的说明
[ExtDesc("哈哈哈")]
public class ExampleExt : AutumnBoxExtension{
...
}
表明拓展模块版本
[ExtVersion(1,0,0)]
public class ExampleExt : AutumnBoxExtension{
...
}
标明拓展该拓展模块的运行需要什么样的设备状态
//当连接设备处于开机或恢复模式时,该模块都可以使用
[ExtRequiredDeviceStates(
DeviceState.Poweron | DeviceState.Recovery)]
public class ExampleExt : AutumnBoxExtension{
...
}
指定拓展模块运行所需的最低秋之盒API版本
//假设运行环境的API是7,那么该模块将不会被显示与调用
[ExtMinApi(8)]
public class ExampleExt : AutumnBoxExtension{
...
}
指定拓展模块开发时的目标API,请填写你所用SDK的大版本号
如果运行环境低于目标API,可能导致一些严重的崩溃,请做兼容处理
[ExtTargetApi(8)]
public class ExampleExt : AutumnBoxExtension{
...
}
设置图标,必须是程序集内嵌资源(将图片文件拖到程序集内,属性设置为嵌入的资源)
图片尽量不要超过64*64
//图片资源的路径
//如果在文件夹内,如Image文件夹,则设置为Image.icon.png(用点而不是文件夹分隔符)
[ExtIcon("icon.png")]
public class ExampleExt : AutumnBoxExtension{
...
}
任何一个继承自ClassExtensionBase
的模块,都将会在其构造方法中获取其类的Attribte,并从中过滤出BeforeCreatingAspect
的实现类并执行其BeforeCreating()方法
,如果在此方法中,创建进程被要求停止,那么将不会创建此拓展模块的实例
你这个拓展模块需要管理员权限?加上这个标记吧,秋之盒将确保你的模块被使用时已经处于管理员模式
//当连接设备处于开机或恢复模式时,该模块都可以使用
[RunAsAdmin]
public class ExampleExt : AutumnBoxExtension{
...
}
如果目标设备没有ROOT权限,那么将会对用户进行提示,并阻止创建实例
//没ROOT别想用
[ExtRequiredRoot]
public class ExampleExt : AutumnBoxExtension{
...
}
我想聪明的你已经看出来了,这个模块将检测设备的安卓版本并作出提示与警告
//必须安卓8.0以上
[ExtMinAndroidVersion(8,0,0)]
public class ExampleExt : AutumnBoxExtension{
...
}
在少数情况下,拓展模块可能需要依赖于某个安卓APP,此切面将帮助你检测该APP是否已经安装
//此处将检测手机上是否安装了 小黑屋 APP
[ExtAppProperty("web1n.stopapp")]
public class ExampleExt : AutumnBoxExtension{
...
}
创建一个类,并将其实现IBeforeCreatingAspect
或继承BeforeCreatingAspect
,然后将其放在ClassExtension上即可!
public class MyAspect : BeforeCreatingAspect{
public overridevoid BeforeCreating(BeforeCreatingAspectArgs args,ref bool canContinue){
args.Context.Message("Hello!");
}
}
[MyAspect]
public class AsepectTest:AutumnBoxExtension{
//...
}
特性中的内容是固定的,但如果我开发的拓展需要支持别的语言呢?
秋之盒开放框架早就考虑到了这个问题
ExtName
ExtDesc
ExtAuth
等特性均可进行多次标记并且设定相应语言
一定要设置默认值!!!否则遇到未声明的语言时,将会崩溃
示例
[ExtName("张哥","en-us:zsh2401","jp-jp:zsh2401")]
public class LangExt: AutumnBoxExtension{
...
}