我有一个程序需要保存实体对象.问题是我不知道这个实体是否附加到我的datacontext.为了解决这个问题,我使用以下代码:
try
{
db.ClientUsers.Attach(clientUser);
db.Refresh(RefreshMode.KeepCurrentValues, clientUser);
}
catch { }
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种更好的方法来检测一个实体是否属于一个上下文,并测试一个实体是否附加到一个特定的上下文.
我正在将xml发送到另一个程序,它希望布尔标志为"是"或"否",而不是"真"或"假".
我有一个类定义如下:
[XmlRoot()]
public class Foo {
public bool Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我序列化它时,我的输出如下所示:
<Foo><Bar>true</Bar></Foo>
Run Code Online (Sandbox Code Playgroud)
但我希望它是这样的:
<Foo><Bar>yes</Bar></Foo>
Run Code Online (Sandbox Code Playgroud)
我可以在序列化时这样做吗?我宁愿不必诉诸于此:
[XmlRoot()]
public class Foo {
[XmlIgnore()]
public bool Bar { get; set; }
[XmlElement("Bar")]
public string BarXml { get { return (Bar) ? "yes" : "no"; } }
}
Run Code Online (Sandbox Code Playgroud)
请注意,我还希望能够再次反序列化此数据.
所以我正在设计一个WCF服务.我对WCF没有经验,我正在尝试决定它是应该在IIS中托管还是自定义Windows服务..还是其他一些选择?
需要考虑的事项:
我怀疑在IIS中托管它会简化某些事情,但我不确定在这种情况下这是一个好主意.
我有哪些选择,它们的优缺点是什么?
Celestia是一个用于空间实时三维可视化的华丽应用程序,具有太阳系的详细模型,超过100,000颗恒星,超过10,000个星系,以及用于添加更多物体的扩展机制.
它可以运行在windows,mac os,linux,freeBSD上,然后是否有任何Android端口呢?或者如何构建或移植到Android?
如何确定是否应该使用IDisposable扩展我的一个接口或在实现我的接口的类上实现IDisposable?
我有一个不需要处理任何外部资源的接口,除了一个特定的实现.我的选择似乎是:
1)在接口上实现IDisposable,要求所有实现都实现Dispose,即使只是一个空方法.
-要么-
2)仅在需要处理资源的类上实现IDisposable.这将导致"使用"问题,因为我的对象是从工厂创建的,因此所有上游代码都对接口起作用.由于接口未绑定到IDisposable,因此"使用"不会看到Dispose方法.但是,我可以将工厂结果转换为实施; 然而,这会使消费者意识到实施,从而破坏了接口的目的.
关于最佳实践的任何想法?
在最近重构了一些涉及一些类重命名的代码之后,我的一些代码以惊人的方式破解了.原因是失败的"是"运算符测试,我很惊讶不是编译器错误或警告.
完整的程序显示了这种情况:
static class ExtensionMethods {}
class Program {
static void Main() {
Test("Test");
}
public static bool Test(object obj)
{
return obj is ExtensionMethods;
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于ExtensionMethods是一个静态类,我本来期望"obj是ExtensionMethods"来引发某种警告.
例如,当被测对象永远不能是提供的类型时,编译器将为"is"运算符发出警告((string)obj) is System.Uri.
我是否忘记了这实际上是一个有意义的测试的场景?
当我在VS2010中按Ctrl + Shift + F时,它会在"查找内容:"框中放置光标附近的任何内容 - 这非常令人烦恼,而且绝不是我想要的.
有没有办法让它默认为我搜索的最后一件事?
我刚下载了VisualSVN Server.它似乎与Visual Studio冲突,因为我的项目现在都不会打开.它抛出的错误说
加载Microsoft Visual Studio菜单时出现问题.要解决此问题,请从命令提示符运行'devenv.exe/resetsettings.
我重新启动,现在收到此错误:
MRU包未正确加载.
我的情况:
public class A
{
public string _prop { get; }
public A(string prop)
{
_prop = prop; // allowed
}
}
Run Code Online (Sandbox Code Playgroud)
另一个案例:
public class A
{
public string _prop => string.Empty;
public A(string prop)
{
// Property or indexer 'A._prop' cannot be assigned to -- it is read only
_prop = prop;
}
}
Run Code Online (Sandbox Code Playgroud)
两种语法:
public string _prop { get; }
Run Code Online (Sandbox Code Playgroud)
和
public string _prop => string.Empty;
Run Code Online (Sandbox Code Playgroud)
创建一个只读属性.但是为什么我不能在第二种情况下分配呢?