小编Thi*_*ies的帖子

如何使用泛型引用当前类类型

我有一个基类,有一个方法,我想使用泛型来强制编码器在当前类上使用泛型表达式:

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)

这可能吗?我应该以不同的方式做这件事吗?

c# generics

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

禁用WPF数据网格中列之间的tabstop

我有一个带有多个列的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)

wpf xaml tabstop wpfdatagrid

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

如何根据用户角色操作WPF GUI

我使用.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,因此用户不会看到/看到他们无权访问的只读元素)

c# security wpf xaml identity

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

WPF中的EndEdit等价物

我有一个包含TextBox的WPF窗口.我已经实现了一个在Crtl-S上执行的Command,它保存了窗口的内容.我的问题是,如果文本框是活动控件,并且我在文本框中有新编辑的文本,则不会提交文本框中的最新更改.我需要从文本框中跳出来获取更改.

在WinForms中,我通常会在表单上调用EndEdit,并且所有挂起的更改都会被提交.另一种方法是使用onPropertyChange绑定而不是onValidation,但我宁愿不这样做.

什么是WPE等效于EndEdit,或者在这种情况下使用的模式是什么?

谢谢,

.net c# data-binding wpf textbox

6
推荐指数
3
解决办法
8185
查看次数

WCF服务返回另一个服务(服务工厂?)

我们使用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)

线索是每个客户端/服务器对的单个端点配置,而不是我希望提供的每个服务联系的端点配置.

这可能吗?

.net c# wcf endpoints

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

标签 统计

c# ×4

wpf ×3

.net ×2

xaml ×2

data-binding ×1

endpoints ×1

generics ×1

identity ×1

security ×1

tabstop ×1

textbox ×1

wcf ×1

wpfdatagrid ×1