我有以下类型,可以在WCF中用作消息合同:
[MessageContract(IsWrapped = true,
WrapperNamespace = "http://example.com/services",
WrapperName = "EchoRequest")]
public class EchoRequest
{
public EchoRequest() { }
public EchoRequest(String value)
{
Value = value;
}
[MessageBodyMember(Name = "Value",
Namespace = "http://example.com/services",
Order = 0)]
public String Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我使用svcutil.exe生成此类型的代理时,我将获得一个客户端,该客户端能够与托管它的服务进行通信,并且元素上的XML名称空间根据Message Contract属性正确。
当我Message.CreateMessage(...)在其实例上使用时,名称空间将还原为默认名称(http://schemas.datacontract.org/2004/07 / ...)。当我使用的实例时DataContractSerializer,也会发生同样的事情。我尝试将名称空间传递给DataContractSerializer构造函数,并且只有包装器包含在名称空间中:
var requestMessage = new EchoRequest("hello, world!");
var serializer = new DataContractSerializer(typeof(EchoRequest),
"EchoRequest",
"http://example.com/services");
var stream = new MemoryStream();
serializer.WriteObject(stream, requestMessage); …Run Code Online (Sandbox Code Playgroud) 当我尝试使用ID加载实体时:
Session.Load<User>(21);
Run Code Online (Sandbox Code Playgroud)
我得到一个'没有给定标识符存在的行'.
在我的代码中,我检查null如:
if(user == null)
Run Code Online (Sandbox Code Playgroud)
我怎么想知道该行是否不存在,或者如何让它返回null呢?
我有一个非常有趣的情况,我已经发现使用.net框架(任何版本)都不可能使用Singleton模式
看下面这段代码
namespace SingletonPattern
{
class Singleton
{
private static readonly Singleton instance = new Singleton();
private static int mcount = 0;
private Singleton() {
mcount += 1;
Console.WriteLine("Creating {0} instances of Singleton Class", mcount.ToString());
}
public static Singleton Instance
{
get
{
return instance;
}
}
}
class program
{
static void Main()
{
for (int i = 0; i < 1000; i++)
{
System.Activator.CreateInstance(Type.GetType("SingletonPattern.Singleton"), true);
}
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在System.activator的帮助下,任何好友都可以打破单件模式.
谁有风险呢?
任何编写一些许可组件的人,其中许可证是作为单例模式实现的.
任何基于服务器的代码都使用Singleton模式.
也许我错了或者我的发现没有意义,但我只想分享并想知道你的看法?
我有两个多行文本框在 splitContainer 中分开。当我向左或向右拖动分隔符时,我希望文本框相应地调整大小。我该怎么做呢?我正在使用 Microsoft Visual C# 2008 Express Edition。谢谢。
我有一个WPF ComboBox,其IsEditable属性绑定到一个视图模型,可以打开和关闭它.当它打开时,我想给焦点ComboBox并选择编辑中的所有文本TextBox.
我无法看到最好的成就.我应该替换基类的ControlTemplate子ComboBox类,并提供所需的属性,使用附加属性还是其他方法?
如何DateTime在c#中"修剪" 属性的值?
例如,当我收到日期时,格式为"10/1/2010 00:00:00".
如何在没有将其转换为字符串的情况下"修剪"'时间'00:00:00?
因为我使用类型的属性DateTime来操作它,所以我不需要转换为String.
任何帮助表示赞赏.
显然,我在整个程序员生活中一直在做一个"非正统的"访客模式.
是的,我从Visitor的Visit方法发送到具体的复合元素访问方法.
我认为这就是我学习它的方法,但是现在我找不到它的任何例子,我从中学到的来源已经消失了.
现在,面对压倒性的证据表明具体的元素调度进入复合元素的Accept方法,我想知道我这样做的方式至少有一些优势.在我看来,两个优点是:
Visit它们来处理它们.这是基本的Composite/Visitor模型:
// "Unorthodox" version
public class BaseVisitor
{
public virtual void Visit(CompositeElement e)
{
if(e is Foo)
{
VisitFoo((Foo)e);
}
else if(e is Bar)
{
VisitBar((Bar)e);
}
else
{
VisitUnknown(e);
}
}
protected virtual void VisitFoo(Foo foo) { }
protected virtual void VisitBar(Bar bar) { }
protected virtual void VisitUnknown(CompositeElement e) { }
}
public class CompositeElement
{
public virtual void Accept(BaseVisitor visitor) { }
} …Run Code Online (Sandbox Code Playgroud) 我有以下可视树:
<DockPanel>
<TextBox Name="ElementWithFocus" DockPanel.Dock="Left" />
<ListBox DockPanel.Dock="Left" Width="200" KeyUp="handleListBoxKeyUp">
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>4</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
</ListBox>
<TextBox DockPanel.Dock="Left" />
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
handleListBoxKeyUp 如下:
private void handleListBoxKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
((UIElement)sender).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
Run Code Online (Sandbox Code Playgroud)
当ListBox有键盘焦点(实际上是ListBoxItem我猜)时,按下Enter将焦点移动到第一个ListBox而不是下面的项目TextBox.为什么会发生这种情况,我怎样才能获得Enter像Tab这里一样的关键?
我无法让我的状态栏显示在底部。当我将它停靠在底部时,它不应该这样工作吗?
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="File">
<MenuItem Header="Open" />
<MenuItem Header="Save As" />
<MenuItem Header="Save" />
<MenuItem Header="Exit" />
</MenuItem>
</Menu>
<ToolBarPanel DockPanel.Dock="Left">
<Button>Næste</Button>
<Button>Frem</Button>
</ToolBarPanel>
<RichTextBox DockPanel.Dock="Right"></RichTextBox>
<StatusBar DockPanel.Dock="Bottom">test</StatusBar>
</DockPanel>
Run Code Online (Sandbox Code Playgroud) 我想在 Windows 10 中设置一个环境变量,但它失败并出现错误:
这个环境变量太大了。此对话框允许设置最多 2047 个字符的值。
我正在学习React-Native并使用android studio,我想在我的 %PATH% 环境变量中包含abd.exe的路径。
我试图通过删除 PATH 变量中的一些值来解决这个问题,但我仍然遇到同样的错误。
错误截图:
如果有人能帮助我解决这个问题,我将不胜感激。
预先感谢您的帮助
.net ×3
c# ×3
wpf ×2
combobox ×1
datacontract ×1
focus ×1
multiline ×1
nhibernate ×1
path ×1
singleton ×1
sql-server ×1
textbox ×1
wcf ×1
windows ×1
windows-10 ×1
winforms ×1
xaml ×1