小编Geo*_*uer的帖子

返回此而不是无效是否有任何不利之处?

假设没有返回void,而是返回对类的引用,即使它没有任何特定的语义意义.在我看来,它会给你更多关于如何调用方法的选项,允许你以流畅的界面风格使用它,我不能真正想到任何缺点,因为你不需要做任何事情带有返回值(甚至存储它).

因此,假设您处于要更新对象然后返回其当前值的情况.而不是说

myObj.Update();
var val = myObj.GetCurrentValue();
Run Code Online (Sandbox Code Playgroud)

你可以把两条线结合起来说

var val = myObj.Update().GetCurrentValue();
Run Code Online (Sandbox Code Playgroud)

编辑: 我一想到就问下面,回想起来,我同意它可能是不必要的和复杂的,但是关于归还这个而不是无效的我的问题就在于此.

在一个相关的说明中,你们怎么看待这种语言包括一些新的语法糖:

var val = myObj.Update()<.GetCurrentValue();
Run Code Online (Sandbox Code Playgroud)

此运算符的优先级较低,因此myObj.Update()将首先执行,然后在myObj上调用GetCurrentValue()而不是Update的void返回.

基本上我正在想象一个操作员会说"在左边的第一个有效对象上调用操作员右侧的方法".有什么想法吗?

.net fluent-interface

11
推荐指数
2
解决办法
909
查看次数

温莎容器:如何强制处理物体?

我有一个实现在Windsor容器中注册的IDisposable的对象,我想处理它,因此调用Dispose方法,下次调用Resolve时它会获取一个新实例.

是否

container.Release(obj); 
Run Code Online (Sandbox Code Playgroud)

立即自动调用Dispose()?或者我需要做什么

obj.Dispose();
container.Release(obj);
Run Code Online (Sandbox Code Playgroud)

在文档中找不到Release的确切内容

编辑: 请参阅下面的答案,了解我运行的测试结果.现在的问题是,如何强制容器释放具有单例生命周期的组件实例?这只需要在一个地方完成,编写自定义生命周期似乎太重量级了,有没有内置的方法呢?

.net castle-windsor inversion-of-control

11
推荐指数
1
解决办法
8971
查看次数

Castle Windsor:如何从代码中指定构造函数参数?

说我有以下课程

MyComponent : IMyComponent {
  public MyComponent(int start_at) {...}
}
Run Code Online (Sandbox Code Playgroud)

我可以通过xml使用castle windsor注册它的实例,如下所示

<component id="sample"  service="NS.IMyComponent, WindsorSample" type="NS.MyComponent, WindsorSample">  
  <parameters>  
    <start_at>1</start_at >  
  </parameters>  
</component>  
Run Code Online (Sandbox Code Playgroud)

我将如何在代码中执行完全相同的操作?(注意,构造函数参数)

.net castle-windsor

11
推荐指数
1
解决办法
1万
查看次数

我在哪里可以获得Toad语法着色方案?

我是深色背景配色方案中浅色调的忠实粉丝 - 遗憾的是,这不是Quest's Toad默认配置的.

我注意到可以在语言管理窗口下导出和导入设置,我知道Toad有很大程度的社区参与.所以我假设必须有一些人们发布自定义着色方案的位置.然而,部分是因为我不知道蟾蜍家伙称之为什么(皮肤?着色?主题?),部分原因是因为谷歌蟾蜍+皮肤太难了我不能为我的生活找到它们.

有没有人知道是否有这样的地方所以我不需要手工设置颜色?

skins toad

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

为延迟加载注入数据访问依赖项的正确方法是什么?

在进行延迟加载时,注入数据访问依赖项的正确方法是什么?

例如,我有以下类结构

class CustomerDao : ICustomerDao
  public Customer GetById(int id) {...}

class Transaction {
  int customer_id; //Transaction always knows this value
  Customer _customer = null;
  ICustomerDao _customer_dao;
  Customer GetCustomer() {
    if(_customer == null)
      _customer = _customer_dao.GetById(_customer_id);
    return _customer
  }
Run Code Online (Sandbox Code Playgroud)

如何将_customer_dao引用到事务对象中?如果我希望事务至少看起来像POCO,那么对构造函数的要求似乎就没有意义.是否可以让Transaction对象直接引用Inversion of Control Container?这也似乎很尴尬.

像NHibernate这样的框架如何处理这个?

lazy-loading inversion-of-control

11
推荐指数
2
解决办法
2955
查看次数

最容易学习和使用.NET ORM框架?

注意:现在有人提出这个问题,请注意日期.这个问题已接近4年,而且信息相对过时.根据我的经验,NHibernate现在相对容易使用(使用流畅的界面),Entity Framework是一个合法的竞争者,而像Dapper和Massive这样的MicroORMS正变得非常流行.


我们正在重写我们的核心Web应用程序之一,我终于从管理层清楚地了解了用ORM框架替换可怕的存储过程纠结以实现我们的数据访问层.

万岁,对我而言.现在我必须选择一个.

以下我玩了一下

现在我知道NHibernate是真正的Alt.Netty选择,但问题是我和承包商合作,据我所知,他们从来没有听说过,NHibernate在相当的学习曲线上享有盛誉.在此期间,亚音速似乎是一种更为直接的方法.我也了解实体框架,但我对它的'meh'招待和Linq对Oracle持谨慎态度,但我很担心我几乎没有听到任何关于它的事实.

所以问题是:

  1. 还有我应该考虑的框架吗?
  2. 你对我的情况推荐哪一个?

更多考虑因素:

  • 当我说我对这些框架玩了一些时,我的意思是.我已经配置了它们并使用它们来提取一些数据以确保它一切正常.这就是它的程度.
  • 这是一个Oracle数据库(正如您可能已经从包含Linq2Oracle中猜到的那样)
  • 由于这是重写,因此数据库已经存在且具有稳定的模式
  • 我并不太担心表现.我们的申请通常一次最多为几个人服务.
  • 你们是那些必须回答我将要遇到的大量问题的人

我倾向于亚力士,但我很好奇人们可能会说些什么.

.net orm

11
推荐指数
1
解决办法
4870
查看次数

Nuget包没有在自定义包上添加引用

我创建了一个nuspec文件:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>MyPackage.dll</id>
    <version>3.5</version>
    <authors>Me</authors>
    <owners>Me</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>The description</description>
    <tags>tag1</tags>
  </metadata>
</package>
Run Code Online (Sandbox Code Playgroud)

在具有文件结构的目录中

  • MyPackage的
    • 大会
      • MyPackage.dll
    • MyPackage.nuspec

我使用创建了我的包nuget.exe pack myPackage.nuspec并将其放在我的本地源中.我可以从visual studio找到并安装它

  • dll将复制到packages目录中
  • 但该引用未添加到项目中
  • 没有创建repositories.config
  • 没有创建packages.config

我错过了什么?

nuget nuget-package

11
推荐指数
1
解决办法
4426
查看次数

什么是hg head/hg父母的git等价物?

在hg我可以hg heads用来查看所有当前的头.我仍然无法找到git中的等价物.该混帐-HG罗塞塔石碑并没有给出答案.

至于hg parentshg 中的哪一个只是告诉一个节点的直接祖先,rosetta stone只是读取非常无益的:

git log # you can read all the information you need from there (as long as you already know the answer to the question you're asking) 
Run Code Online (Sandbox Code Playgroud)

git

11
推荐指数
1
解决办法
1984
查看次数

在PowerShell中连接或使用heredoc时保留换行符

假设我有一个c:\temp\temp.txt包含内容的文档

line 1
line 2
Run Code Online (Sandbox Code Playgroud)

我创建了以下功能

PS>function wrapit($text) {
@"
---Start---
$text
---End---
"@
}
Run Code Online (Sandbox Code Playgroud)

然后跑 PS> wrapit((Get-Content c:\temp\temp.txt))

将输出

---Start---
line 1 line 2
---End---
Run Code Online (Sandbox Code Playgroud)

我如何保留换行符?追加与插值无关.

我发现了这个相关的问题,但在这里他们使用的是字符串数组.我正在使用一个字符串,其中包含换行符(如果直接从函数内部输出字符串而不连接,则可以看到它们,并$text | gm确认我正在处理字符串,而不是数组).我可以在世界上进行所有的字符串解析,将其锤入到位,但这似乎就像是在圆孔中敲击一个方形钉.我错过了什么概念?

powershell

11
推荐指数
2
解决办法
6248
查看次数

实体框架以一对多替换集合的正确方法

假设客户有许多电话号码,而电话号码只有一个客户.

public class PhoneNumber : IValueObject {
  public string Number {get; set;}
  public string Type {get; set;}
}

public class Customer : IEntity {
   public ICollection<PhoneNumber> phones {get; private set;} //ew at no encapsulated collection support
   public void SetPhones(params PhoneNumber[] phones) {
       this.phones.Clear();
       this.phones.AddRange(phones);
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我像这样进行EF映射并运行它,每次设置电话号码都会创建新的PhoneNumbers但不删除旧的.没有其他实体引用电话号码,我甚至没有在我的dbcontext上公开它,有没有办法告诉EF 完全Customer拥有PhoneNumbers,因此如果从集合中删除了电话号码,他们应该被删除?

证明

我意识到有十几种方法来解决这个问题,但这不是一个奇怪的边缘情况,处理这个问题的"正确"方法是什么.

c# mapping orm entity-framework entity-framework-6

11
推荐指数
1
解决办法
6286
查看次数