我正在开发一个应用程序,我需要调用泛型类的方法,而不关心实例的实际类型.像下面的Java代码:
public class Item<T>{
private T item;
public doSomething(){...}
}
...
public void processItems(Item<?>[] items){
for(Item<?> item : items)
item.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
当时我很着急,所以我通过使用我需要调用的方法定义一个接口并使泛型类实现它来解决我的问题.
public interface IItem
{
void doSomething();
}
public class Item<T> : IItem {
private T item;
public void doSomething(){...}
}
...
public void processItems(IItem[] items)
{
foreach(IItem item in items)
item.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
这种解决方法工作正常,但我想知道实现相同行为的正确方法是什么.
编辑:
我忘了提到调用者processItems
不知道实际的类型.实际上,这个想法是作为参数传递的数组processItems
可能包含混合类型.由于在.Net中不可能有这样的数组,因此使用非泛型基类或接口似乎是唯一的方法.
我面临以下挑战:
我在不同的地理位置有一堆数据库,网络可能会失败很多(我使用的是蜂窝网络).我需要保持所有数据库同步,但不需要实时.我正在使用Java,但我可以自由选择任何免费数据库.
关于如何实现这一点的任何建议.
谢谢.
我有一个名为open的实例方法,需要调用在C中声明的函数,也称为open.关注样本:
void SerialPort::open()
{
if(_open)
return;
fd = open (_portName.c_str(), O_RDWR | O_NOCTTY );
_open = true;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它(使用GCC)时,我收到以下错误:
error: no matching function for call to 'SerialPort::open(const char*, int)'
Run Code Online (Sandbox Code Playgroud)
我包含了所有必需的C头.当我更改方法的名称,例如open2时,我没有编译问题.
我怎么解决这个问题.提前致谢.
我正在Linux中使用实时信号来通知串行端口中新数据的到来.不幸的是,这会导致睡眠呼叫在有信号时被中断.
有人知道避免这种行为的方法吗?
我尝试使用常规信号(SIGUSR1),但我仍然保持相同的行为.
我正在使用以下代码来定义SQL Server上的服务依赖项:
serviceInstaller.StartType = ServiceStartMode.Automatic;
serviceInstaller.ServicesDependedOn = new[] { "MSSQLSERVER" };
Installers.Add(serviceInstaller);
Installers.Add(processInstaller);
Run Code Online (Sandbox Code Playgroud)
这适用于两台计算机,一台使用SQL Server,另一台使用SQL Server Express.但是当我在客户端服务器中安装该服务时,它失败了,因为SQL Server Express服务名称不同(SQLSERVEREXPRESS).有没有办法定义在两种情况下都有效的依赖?谢谢.
我试图在一个内部显示一个大图像ScrollPanel
.这ScrollPanel
是一个标签之一TabPanel
.这一切都在一个内部VerticalSplitPanel
.
我希望能够ScrollPanel
进行滚动,但是它VerticalSplitPanel
具有滚动条.
任何人都可以帮我实现理想的行为吗?
谢谢.
在分析应用程序时,我注意到RandomAccessFile.writeLong花了很多时间.
我检查了这个方法的代码,它涉及8次本机方法写入调用.我使用byte []为writeLong编写了一个替代实现.像这样的东西:
RandomAccessFile randomAccessFile = new RandomAccessFile("out.dat", "rwd");
...
byte[] aux = new byte[8];
aux[0] = (byte) ((l >>> 56) & 0xFF);
aux[1] = (byte) ((l >>> 48) & 0xFF);
aux[2] = (byte) ((l >>> 40) & 0xFF);
aux[3] = (byte) ((l >>> 32) & 0xFF);
aux[4] = (byte) ((l >>> 24) & 0xFF);
aux[5] = (byte) ((l >>> 16) & 0xFF);
aux[6] = (byte) ((l >>> 8) & 0xFF);
aux[7] = (byte) ((l >>> 0) & 0xFF);
randomAccessFile.write(aux); …
Run Code Online (Sandbox Code Playgroud) 我正在尝试同步两个属性网格的垂直滚动条.这个想法是当用户滚动一个属性网格时,另一个属性网格滚动相同的量.
我的第一种方法是处理滚动事件,但似乎PropertyGrid不会生成这种事件.我查看了PropertyGrid中包含的控件,并且有一个PropertyGridView,我敢打赌是带滚动条的控件.
有人知道解决方法来实现我想要的吗?
谢谢.
c ×2
c# ×2
java ×2
.net ×1
c++ ×1
database ×1
distributed ×1
generics ×1
gwt ×1
io ×1
layout ×1
linux ×1
performance ×1
propertygrid ×1
replication ×1
scroll ×1
signals ×1
wildcard ×1
winforms ×1