等等,不要急于回答"java.util.Date",请考虑以下场景.
具有2个字段的Person对象:"birthday"和"nextMeeting"都是java.util.Date.现在生日存储在数据库中作为日期类型列(没有时间),例如.01-10-1979,和next作为日期时间类型的例子.01-10-2010 20:00:00
你从db中取出它,"生日"将由JDBC自动设置为午夜.现在,您需要使用RMI或任何技术将此对象发送到其他JVM.
另一方面,JVM在发起JVM时具有-1h的时区.这是问题开始的地方.nextMeeting成为01-10-2010 19:00:00,从用户的角度来看,这绝对是精细和正确的......
但是生日变成30-09-1979 23:00:00将在9月30日表示给用户,这实际上不是我们想要的,因为显然生日是静态的并且不依赖于时区.
所以db中的列类型选择正确(日期).这种类型的列通常表示为java.util.Date.但在我们的例子中,使用java类型是错误的.
那你怎么代表一个生日?考虑一下你需要在UI上操作这个对象,就像在datepicker组件中一样......
Class SessionModel
是一个提供多种服务的服务定位器(我将来会详细说明我的系统架构,但是现在我需要这样做).
我将以下代码部分编辑为Short,Self Contained,Correct(Compilable),Example(SSCCE):
using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
namespace ConsoleApplication1
{
internal class Program
{
private static void Main(string[] args)
{
var sessionModel = new SessionModel(3);
// first case (see text down below):
var compositionContainer = new CompositionContainer();
// second case (see text down below):
//var typeCatalog = new TypeCatalog(typeof (SessionModel));
//var compositionContainer = new CompositionContainer(typeCatalog);
compositionContainer.ComposeExportedValue(sessionModel);
var someService = compositionContainer.GetExportedValue<ISomeService>();
someService.DoSomething();
}
}
public class SessionModel
{
private int AValue { get; set; } …
Run Code Online (Sandbox Code Playgroud) 我有一个导入MEF组件,它在导入向导打开时动态加载.一旦用户选择了她想要处理的导入类型,就会将对导入向导对话框的控制传递给所选的导入组件.当然,导入组件需要为向导对话框提供资源(例如DataTemplate
s).目前,这是通过DataTemplateSelector
导入组件提供的s 实现的.他们访问ResourceDictionary
导入组件程序集的本地.
但是你可以想象,这很乏味:我必须为每个DataTemplate
提供的代码添加代码,WPF不会DataTemplate
根据ViewModel
显示的类型自动使用右边的代码.
以前有人解决了这个问题吗?你们是如何在插件环境中提供资源的?
感谢您提前提供的任何帮助.
最好的祝福