我有一个类,里面有一个字符串和一个枚举器列表.
public enum SomeEnum
{
Undefined=0,
Enum1,
Enum2,
Enum3,
End
}
public class SomeObject
{
public virtual int ID{get; set;}
public virtual String Name {get; set;}
public virtual IList<SomeEnum> EnumList {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在,应该有一个SomeObjects列表,包含ID和Name.应该有另一张这样的地图:
5 2
5 3
3 1
9 3
Run Code Online (Sandbox Code Playgroud)
意思是,ID为5的玩家有Enum2和Enum3,另一个ID为3的玩家有Enum1,而ID为9的玩家有Enum3.他们说可以映射int,float等,但我不想在列表中创建IList.
有一种简单的方法可以让流利的nhibernate这样做吗?
HasMany(x => x.EnumList )
.Cascade.All()
.Table("ObjectEnumTable");
Run Code Online (Sandbox Code Playgroud)
此映射文件抛出异常并说"关联引用未映射的类:SomeEnum".
提前致谢.
我需要在linux(确切地说是debian)中编写一个程序,如果USB设备未通过特定的过滤器,则禁用它。例如,程序可能被设置为禁止网络摄像头、U 盘和键盘,启用鼠标和打印机(通过 USB)。过滤器可能会在运行时发生变化。例如,程序可能会收到一条启用 USB 记忆棒的消息,并且它应该在不重新启动系统的情况下做出响应。该程序是用 python 编写的,但嵌入 c 代码(或其他代码)也是可以接受的。
我尝试过的
我尝试过很多方法,但其中一些与编程无关。
首先,我尝试搞乱 udev。我可以在设备插入时监视活动并写入过滤器。曾经有一个选项“ignore_device”忽略过滤的设备。例如,要忽略属于 usb 子系统成员的所有设备,我会将其编写为 udev 规则:
ACTION=="add", SUBSYSTEM=="usb", OPTIONS+="ignore_device"
Run Code Online (Sandbox Code Playgroud)
但这个选项是在这个版本的 udev 中发布的。到目前为止我得到的是udev目前主要用于监控。当然,我可以为上面运行脚本的规则编写附加规则,但我必须在其他地方进行禁用。
其次,我尝试 ioctl 向设备句柄发送 DISCONNECT 信号。我正在用 USB 鼠标对此进行测试。这是Python代码:(我也在C中尝试过,没有任何改变)
import fcntl
import sys
USBDEVFS_RESET = ord('U') << (4*2) | 20
USBDEVFS_DISCONNECT = ord('U') << (4*2) | 22
raw_name = "/dev/bus/usb/{:03d}/{:03d}"
filename = raw_name.format(1,2)
fd = open(filename, "wb")
fcntl.ioctl(fd, USBDEVFS_DISCONNECT, 0)
Run Code Online (Sandbox Code Playgroud)
在这里,如果我发送 USBDEVFS_RESET,它会起作用,鼠标输入会被忽略一两秒。但断开信号会引发错误:
IOError: [Errno 25] Inappropriate ioctl for device
Run Code Online (Sandbox Code Playgroud)
我从这里得到的是,我无法向鼠标发送断开连接信号。也许 USB 记忆棒或打印机或其他一些设备可以工作,我还没有尝试过。我想开发尽可能通用的程序,以避免编写额外的特定于设备的代码,因此这种方法对我来说似乎毫无用处。这里的另一点是,当我手动断开/连接鼠标时,我会在 udev 监视器中看到事件。但是当我发送重置信号时,没有发送任何事件。
udev 监视器表示鼠标已安装到此路径:(/sys/bus/usb/devices/1-3 …
我一直试图开始OutputDebugString工作,但没有用.我的代码如下:
int main(int argc, char* argv[])
{
OutputDebugStringA("asd");
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我在没有调试的情况下运行应用程序时,DebugView显示asd但是当我调试我的应用程序(F5)时,它不会在输出或中间窗口中打印我的字符串.
我尝试过OutputDebugString asd但没有改变.可能是什么问题?