我有一个基类,有一个方法,我想使用泛型来强制编码器在当前类上使用泛型表达式:
public class TestClass
{
public void DoStuffWithFuncRef<T>(Expression<Func<T, object>> expression) where T : TestClass
{
this.DoStuffWithFuncRef(Property<T>.NameFor(expression));
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想强制T为实例化类的类型,我希望这将导致C#编译器自动理解要使用的泛型类型.例如,我想避免编写下面的doStuff方法,我必须指定正确的类型 - 而是使用doStuffILikeButCannotGetToWork方法:
public class SubTestClass : TestClass
{
public string AProperty { get; set; }
public void doStuff()
{
this.DoStuffWithFuncRef<SubTestClass>(e => e.AProperty);
}
public void doStuffILikeButCannotGetToWork()
{
this.DoStuffWithFuncRef(e => e.AProperty);
}
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?我应该以不同的方式做这件事吗?
我有一个带有多个列的WPF Toolkit数据网格.我试图获得一个行为,您可以使用选项卡切换到网格,然后使用单个选项卡再次选项卡.例如,我不希望选中网格的所有列或单元格,只需进入一次,然后退出.
有没有一个简单的解决方案,我尝试将TabNavigation设置为Once,同时禁用TabStop(未在下面的代码中显示)并将列上的TabNavigation设置为None,但没有成功.
有什么我缺少或我需要在代码中处理Tab键吗?
<my:DataGrid Name="datagrid"
AutoGenerateColumns="False" IsReadOnly="True"
CanUserAddRows="False" CanUserDeleteRows="False"
Background="White"
KeyboardNavigation.TabNavigation="Once">
<my:DataGrid.Columns>
<my:DataGridTextColumn x:Name="ID" Header="ID" Width="1*" ></my:DataGridTextColumn>
<my:DataGridTextColumn x:Name="Ticker" Header="Ticker" Width="1*" KeyboardNavigation.TabNavigation="None"></my:DataGridTextColumn>
<my:DataGridTextColumn x:Name="OfficialName" Header="Name" Width="3*" KeyboardNavigation.TabNavigation="None"></my:DataGridTextColumn>
</my:DataGrid.Columns>
</my:DataGrid>
Run Code Online (Sandbox Code Playgroud) 我使用.NET的IIdentity和IPrincipal对象来实现基于角色的安全性,我正在修改基于当前用户所拥有的角色显示的控件.
我的问题是推荐的方法是在WPF窗口中启用/禁用字段 - 显示/隐藏依赖于IIdentity.IsInRole类型调用的字段.
这可以在XAML中完成,还是我必须将其抽象为代码,我认为后面的代码有点混乱;
this.txtUserName.IsReadOnly = !MyPrincipal.CurrentPrincipal.IsInRole("Administrator");
this.mnuCreateUser.Visibility = MyPrincipal.CurrentPrincipal.IsInRole("Administrator");
? Visibility.Hidden : Visibility.Visible;
Run Code Online (Sandbox Code Playgroud)
(注意;我的代码在执行函数时检查角色,我要做的是根据角色修改GUI,因此用户不会看到/看到他们无权访问的只读元素)
我有一个包含TextBox的WPF窗口.我已经实现了一个在Crtl-S上执行的Command,它保存了窗口的内容.我的问题是,如果文本框是活动控件,并且我在文本框中有新编辑的文本,则不会提交文本框中的最新更改.我需要从文本框中跳出来获取更改.
在WinForms中,我通常会在表单上调用EndEdit,并且所有挂起的更改都会被提交.另一种方法是使用onPropertyChange绑定而不是onValidation,但我宁愿不这样做.
什么是WPE等效于EndEdit,或者在这种情况下使用的模式是什么?
谢谢,
我们使用WCF进行客户端和服务器应用程序之间的通信.客户端应用程序具有许多需要与服务器通信的功能 - 我们选择在多个类中实现此功能(分离责任)
当时,我们正在为每个对象创建新的WCF端点和服务合同 - 开票,会计,内容管理等.这会导致客户端和服务器上的大量端点配置(在进入测试时可能存在错误配置问题,生产平台).
我想知道我是否可以定义一个可以提供多个服务联系实现的WCF端点.然后,我们的配置文件将包含一个端点(到服务工厂),我可以通过指定我感兴趣的服务的接口来请求不同的服务.
例如
using (IServiceClientFactory serviceClientFactory = new RealProxyServiceClientFactory())
{
// This is normal WCF proxy object creation.
IServiceFactory serviceFactory = serviceClientFactory.CreateInstance<IServiceFactory>("");
// This is what we would like to do
IInvoiceService invoiceService = serviceFactory.getService(typeof(IInvoiceService));
invoiceService.executeOperation(data);
}
Run Code Online (Sandbox Code Playgroud)
线索是每个客户端/服务器对的单个端点配置,而不是我希望提供的每个服务联系的端点配置.
这可能吗?