小编Ale*_*all的帖子

需要一个Hibernate中主键@OneToOne映射的示例

有人可以给我一个Hibernate中单向@OneToOne主键映射的例子吗?我尝试了很多种组合,到目前为止,我得到的最好的东西是:

@Entity
@Table(name = "paper_cheque_stop_metadata")
@org.hibernate.annotations.Entity(mutable = false)
public class PaperChequeStopMetadata implements Serializable, SecurityEventAware {

private static final long serialVersionUID = 1L;

@Id
@JoinColumn(name = "paper_cheque_id")
@OneToOne(cascade = {}, fetch = FetchType.EAGER, optional = false, targetEntity = PaperCheque.class)
private PaperCheque paperCheque;
}
Run Code Online (Sandbox Code Playgroud)

每当Hibernate尝试自动生成上述映射的模式时,它会尝试将主键创建为blob,而不是long,即PaperCheque的id类型.有人能帮帮我吗 ?如果我无法得到一个确切的解决方案,那么接近就会有所作为,但我会感激任何回应.

java annotations hibernate one-to-one

5
推荐指数
2
解决办法
3万
查看次数

获取COM对象以在C#中除S_OK(0)之外的任何结果抛出异常

我正在努力升级到一个广泛使用COM/MFC /(谁知道有多少其他技术)的项目.作为升级的一部分,我们尝试将尽可能多的功能移植到托管C#代码中,但遗憾的是有些东西无法移动(原因我不会进入).其中一个问题是严重滥用COM的代码段,并返回HRESULT中的指针,这些指针稍后会被转换为各种其他COM接口实现对象.我已经尝试了以下代码将HRESULT转换为指针,然后我可以从中获取接口:

        MyComInterfaceInCS myObj = null;

        try
        {
            world.GetTD_MyComInterfaceInCS();
        }
        catch (COMException comException)
        {
            int pointerValue = Marshal.GetHRForException(comException);

            IntPtr myObjPointer = new IntPtr(pointerValue);

            myObj = (MyComInterfaceInCS) Marshal.GetObjectForIUnknown(myObjPointer);
        }
Run Code Online (Sandbox Code Playgroud)

.... 但是,没有抛出COM异常,我猜它是因为指针不是负值,因此技术上不是COM错误.有没有办法在对象上配置COM以在任何事件上抛出COM异常但是S_OK(0)?

c# com

5
推荐指数
1
解决办法
342
查看次数

C#中的不可修改列表

在Java中,可以使用Collections#unmodifiableList()方法从现有List对象创建不可修改的列表.C#中有没有对应的?我是该语言的新手,并且在MSDN文档中找不到这样的内容.

.net c# collections unmodifiable c#-4.0

4
推荐指数
1
解决办法
3569
查看次数

在.NET 4.0中加载本机DLL时发生BadImageFormatException

我正在尝试使用USB上的CAN设备,该设备附带一个原生DLL,需要由.NET C#类(供应商提供的源代码)包装,该类包含在一个项目中.他们的示例应用程序面向.NET 2.0,其中我的应用程序面向.NET 4.0 我能够在他们的示例应用程序中使用代码并调试一切就好了,但是,当我尝试调试我的应用程序时,我得到一个BadImageFormatException:

System.TypeInitializationException: The type initializer for 'TotalPhase.KomodoApi' threw an exception. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
Run Code Online (Sandbox Code Playgroud)

他们的代码和我的代码之间的唯一区别似乎是他们的代码是为.NET 2.0构建的应用程序,并且(目前)我的代码在.NET 4.0中作为MSTest单元测试运行.两种解决方案都针对AnyCPU.我正在运行Windows 7 Ultimate 64位安装.即使从AnyCPU更改为x86也没有任何区别.如何在AnyCPU项目中加载此本机DLL?

.net c# dllimport

4
推荐指数
1
解决办法
4362
查看次数

根据WPF中的模板在运行时创建具有不同内容的TabItem

我正在使用WPF编写应用程序,其中一部分涉及为用户管理各种文件,这些文件用于配置自定义的内部设备.我需要能够在同一个TabControl中的选项卡中操作不同类型的配置,这意味着必须动态生成TabItems的内容.我想用ControlTemplates做到这一点,但我还没有成功获得一个工作模板.我在我的Window资源中定义了一个名为"pendantConfigurationTabItemTemplate"的ControlTemplate,我使用以下代码将模板(包含我需要访问的命名项)应用到TabItems并将它们添加到它们的父TabControl:

<ControlTemplate x:Key="pendantConfigurationTabItemTemplate" TargetType="TabItem">
    <StackPanel Orientation="Vertical">
        <my:PendantConfigurationFileEditor x:Name="configurationEditor"/>
        <StackPanel Style="{StaticResource defaultOkCancelButtonsContainerStyle}">
            <Button Style="{StaticResource defaultOkCancelButtonStyle}"/>
            <Button Style="{StaticResource defaultOkCancelButtonStyle}" Click="OkButton_Click"/>
        </StackPanel>
    </StackPanel>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

代码背后:

TabItem ConfigTab = new TabItem();

switch (ConfigFile.Device)
{
  case DeviceType.PENDANT:
{
  ControlTemplate TabTemplate = Resources["pendantConfigurationTabItemTemplate"] as ControlTemplate;

  ConfigTab.Template = TabTemplate;
  ConfigTab.ApplyTemplate();

  object Editor = TabTemplate.FindName("configurationEditor", ConfigTab);

  PendantConfigurationFileEditor ConfigFileEditor = Editor as PendantConfigurationFileEditor;

  ConfigFileEditor.PendantConfiguration = DeviceConfig;

  break;
}
default:
  /* snipped */
  return;
}

ConfigTab.Header = ConfigFile.ConfigurationName;

this.EditorTabs.Items.Add(ConfigTab);
this.EditorTabs.SelectedIndex = this.EditorTabs.Items.Count - 1;
Run Code Online (Sandbox Code Playgroud)

但是,每当我运行程序时,没有选项卡添加到选项卡控件,而是选项卡控件(看似)被模板内容替换或覆盖.有人可以帮我解决这个问题吗?

实际上,我想要做的是将WPF模板用作TabItem工厂

wpf tabcontrol controltemplate tabitem

3
推荐指数
1
解决办法
6841
查看次数

Unix程序使用共享库中的错误函数

我正在努力重构一套旧的实用程序,并创建一个新服务器,它将使用所有这些服务器的公共代码来统一其功能并允许远程客户端进行外部访问.对于每个实用程序,我将获取服务器所需的代码并将其重构为共享库,以便实用程序和服务器现在都将链接到共享库.由于的方式将这些UTILITES前实现者做事情,他们非常简单,只是复制和粘贴的一切时,他们需要建立一个新的工具,所以有一吨的具有相同签名功能(即回调XML解析器),但在里面做不同的事情.

当我运行已经重构的独立实用程序来链接共享代码时,它们完美地工作.当我尝试使用与给定实用程序具有相同功能的服务器时,服务器正在使用链接到的第一个库中的代码,而不是应该从中获取功能的库.

例如,我有一个由公共xml库解析的设备A,B,C的xml,但是每个设备都有自己的共享库libA,libB,libC,服务器使用它.当我向服务器调用发送XML的设备C,它的使用功能,从力霸"HandleStartElement",而不是在libc中相同名称和签名的功能,即使共享库仅在内部和唐声明这些功能" t共享任何提到这些内部回调的头文件来解析xml.

有人可以向我解释为什么它没有阅读正确的功能,以及如何在将来避免这种情况?

我的服务器makefile有以下标志用于编译主程序:

-I../include -L../lib -lA -lB -lC
Run Code Online (Sandbox Code Playgroud)

每个共享库都使用旁边没有共享库的标志,并且不使用-fPIC.

unix gcc shared-libraries

3
推荐指数
1
解决办法
619
查看次数

fopen vs stat的表现

我正在为嵌入式系统编写几个C程序,我们可以挤出的每一点性能都很重要.部分原因是访问日志文件.在确定文件是否存在时,使用open/fopen和stat之间是否有任何性能差异?我一直在使用stat,假设它只需要对文件系统进行快速检查,而fopen必须实际获得访问文件并在返回之前操作内部数据结构.这有什么好处吗?

c file-io fopen

3
推荐指数
1
解决办法
3331
查看次数

在Extract Method期间,让ReSharper替换突出显示的表达式的多个实例

任何人都可以告诉我如何在使用Extract Method时让ReSharper替换突出显示的表达式的多个实例(而不是仅仅一个)?我发誓我之前已经做过它(就像Eclipse在Extract Method重构中所做的那样),但我无法在最新安装5.1上做到这一点.我正在使用Visual Studio 2010.

resharper visual-studio-2010

3
推荐指数
1
解决办法
631
查看次数

没有XML属性节点的C#中的XML序列化

我有遗留系统的XML文档格式,我必须在将来的应用程序中支持.我希望能够在XML和C#对象之间序列化和反序列化XML,但是,使用xsd.exe生成的对象,C#序列化包括xmlns:xsi ...,xsi:... etc XML属性生成的文档的根元素.无论如何要禁用它,以便绝对没有XML属性节点被放在生成的XML中?XML文档应该只是元素.


重复? XmlSerializer:删除不必要的xsi和xsd命名空间

c# xml xml-serialization

2
推荐指数
1
解决办法
6784
查看次数

在WPF中正确使用VirtualizingStackPanel

有人可以告诉我如何在WPF中正确使用VirtualizingStackPanel吗?我在ItemsPanelTemplate中为我的ItemsControl设置了一个VirtualizingStackPanel,并将其设置为我的ItemsHost,但是当我在我的item控件上注册一个CleanUpVirtualizedItem附加事件的监听器时,没有任何反应.我没有看到事件被调用.我也没有看到我的数据模板中的自定义控件上的任何Unloaded事件被调用,这表明我没有实际的虚拟化.任何帮助将非常感激.

wpf itemspanel virtualizingstackpanel

2
推荐指数
1
解决办法
6003
查看次数

C#中对WPF GUI的多线程访问

我正在尝试创建一个自定义的内部应用程序,该应用程序将访问通过UDP广播其名称和IP地址的其他内部系统.我正在尝试创建一个多线程对话框,每500毫秒轮询一次UDP消息15秒,解析UDP消息,然后将检测到的系统的名称添加到对话框中的ListBox,实时更新.我已经测试并完成了UDP扫描代码,唯一的问题是跨线程更新ListBox.每当我尝试访问ListBox的Items或ItemSource属性时,我都会收到System.InvalidOperationException:"调用线程无法访问此对象,因为另一个线程拥有它."

相关的堆栈跟踪部分:

   at System.Windows.Threading.Dispatcher.VerifyAccess()
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Controls.ItemsControl.set_ItemsSource(IEnumerable value)
Run Code Online (Sandbox Code Playgroud)

无论我是否使用ObservableCollection(我知道,与集合类型无关),HashSet或任何其他对象,都会发生这种情况.任何人都可以帮助我跨不同的线程访问GUI吗?

c# wpf multithreading

1
推荐指数
1
解决办法
2634
查看次数