小编Jer*_*ing的帖子

WPF:关闭后无法重用窗口

我试图Window在需要的时候保留一个实例ShowDialog.这在winforms中找到了,但是在WPF中我接受了这个例外:

System.InvalidOperationException:无法在Window关闭后设置Visibility或调用Show,ShowDialog或WindowInteropHelper.EnsureHandle.

有没有办法在WPF中做这样的事情?

MyWindow.Instance.ShowDialog();

public class MyWindow : Window
{
    private static MyWindow _instance;

    public static MyWindow Instance
    {
        if( _instance == null )
        {
            _instance = new Window();
        }
        return _instance();
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# wpf singleton window

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

处理IDisposable对象的通用函数

我正在处理一个处理大量Sql对象的类 - 连接,命令,DataAdapter,CommandBuilder等.有多个实例我们有这样的代码:

if( command != null )
{
    command.Dispose();
}

if( dataAdapter != null )
{
    dataAdapter.Dispose();
}

etc
Run Code Online (Sandbox Code Playgroud)

我知道这在重复方面相当不足,但它已经开始闻起来了.我认为它闻起来的原因是因为在某些情况下该对象也被设置为null.

if( command != null )
{
    command.Dispose();
    command = null;
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我希望摆脱重复.我已经提出了这种通用方法来处理一个对象并将其设置为null.

private void DisposeObject<TDisposable>( ref TDisposable disposableObject )
    where TDisposable : class, IDisposable
{
    if( disposableObject != null )
    {
        disposableObject.Dispose();
        disposableObject = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是......

  1. 这个通用功能是个坏主意吗?
  2. 是否有必要将对象设置为null

编辑:

我知道这个using声明,但是我不能总是使用它,因为我有一些成员变量需要持续超过一次调用.例如,连接和事务对象.

谢谢!

c# generics idisposable

11
推荐指数
3
解决办法
2907
查看次数

与未遵循团队定义标准的队友合作的想法?

在团队环境中工作,您如何处理拒绝遵循团队定义标准的开发人员?

1)开发人员处于初级水平

2)开发人员处于同行级别

3)开发人员处于高级别

我知道这是有启发性的,但我觉得通过让开发人员更专业,这将有利于开发人员.谢谢!

standards coding-style

5
推荐指数
1
解决办法
302
查看次数

如何排序实体框架返回的内部列表?

如何对实体框架返回的对象的内部集合进行排序?

public class X
{
   public string Field {get; set;}
   public EntityCollection<Y> Ys {get; set;}
}

public class Y
{
   public string Field {get; set;}
}

from x in entities.Xs
orderby x.Field
select x
Run Code Online (Sandbox Code Playgroud)

有没有办法修改这个LINQ查询以返回X对象,还有Y对象排序?或者我必须在Y列表返回时手动排序?

编辑:

此代码必须返回X类型对象的集合,匿名键入不符合当前项目的要求.

c# entity-framework sql-order-by

5
推荐指数
1
解决办法
1459
查看次数

有没有办法强制WebAPI严格符合已发布的界面?

我试图解决的用例是我们的域模型的封装.例如,我们有一个内部模型,用于后端处理,我们不希望暴露给客户端.这种封装的主要原因之一是变化的波动性,因为我们的域对象可能比"已发布"的客户端模型更快地变化.因此,我们希望将WebApi控制器限制为仅返回"已发布"的客户端模型.

为此,我们需要在WebApi项目之外创建没有内部模型引用的接口,然后在WebAPI控制器上使用这些接口,最后更改路由/过滤以验证所访问的路由/方法是否为界面.

大会A.

public class PublishedModel
{
    public int Foo {get; set;}
    public string Bar {get; set;}
}

public interface IPublishedAPI
{
    PublishedModel GetModel(int id);
}
Run Code Online (Sandbox Code Playgroud)

大会B.

public class MyApi : ApiController, IPublishedAPI
{
    public IDomainManager _manager;

    public MyApi(IDomainManager manager)
    {
        _manager = manager;
    }

    [HttpGet]
    [Route("good/{id}")]
    public PublishedModel Good(int id)
    {
          DomainModel domainModel = _manager.GetDomainModelById(id);
          return new PublishedModel
          {
              Foo = domainModel.Foo,
              Bar = domainModel.Bar,
          }
    }

    [HttpGet]
    [Route("bad/{id}")]
    public DomainModel Bad(int id)
    {
          var domainModel = _manager.GetDomainModelById(id);
          return …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api asp.net-web-api-routing

5
推荐指数
1
解决办法
96
查看次数