假设没有返回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返回.
基本上我正在想象一个操作员会说"在左边的第一个有效对象上调用操作员右侧的方法".有什么想法吗?
我有一个实现在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的确切内容
编辑: 请参阅下面的答案,了解我运行的测试结果.现在的问题是,如何强制容器释放具有单例生命周期的组件实例?这只需要在一个地方完成,编写自定义生命周期似乎太重量级了,有没有内置的方法呢?
说我有以下课程
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)
我将如何在代码中执行完全相同的操作?(注意,构造函数参数)
我是深色背景配色方案中浅色调的忠实粉丝 - 遗憾的是,这不是Quest's Toad默认配置的.
我注意到可以在语言管理窗口下导出和导入设置,我知道Toad有很大程度的社区参与.所以我假设必须有一些人们发布自定义着色方案的位置.然而,部分是因为我不知道蟾蜍家伙称之为什么(皮肤?着色?主题?),部分原因是因为谷歌蟾蜍+皮肤太难了我不能为我的生活找到它们.
有没有人知道是否有这样的地方所以我不需要手工设置颜色?
在进行延迟加载时,注入数据访问依赖项的正确方法是什么?
例如,我有以下类结构
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这样的框架如何处理这个?
注意:现在有人提出这个问题,请注意日期.这个问题已接近4年,而且信息相对过时.根据我的经验,NHibernate现在相对容易使用(使用流畅的界面),Entity Framework是一个合法的竞争者,而像Dapper和Massive这样的MicroORMS正变得非常流行.
我们正在重写我们的核心Web应用程序之一,我终于从管理层清楚地了解了用ORM框架替换可怕的存储过程纠结以实现我们的数据访问层.
万岁,对我而言.现在我必须选择一个.
以下我玩了一下
现在我知道NHibernate是真正的Alt.Netty选择,但问题是我和承包商合作,据我所知,他们从来没有听说过,NHibernate在相当的学习曲线上享有盛誉.在此期间,亚音速似乎是一种更为直接的方法.我也了解实体框架,但我对它的'meh'招待和Linq对Oracle持谨慎态度,但我很担心我几乎没有听到任何关于它的事实.
所以问题是:
更多考虑因素:
我倾向于亚力士,但我很好奇人们可能会说些什么.
我创建了一个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找到并安装它
我错过了什么?
在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) 假设我有一个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确认我正在处理字符串,而不是数组).我可以在世界上进行所有的字符串解析,将其锤入到位,但这似乎就像是在圆孔中敲击一个方形钉.我错过了什么概念?
假设客户有许多电话号码,而电话号码只有一个客户.
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,因此如果从集合中删除了电话号码,他们应该被删除?

我意识到有十几种方法来解决这个问题,但这不是一个奇怪的边缘情况,处理这个问题的"正确"方法是什么.
.net ×4
orm ×2
c# ×1
git ×1
lazy-loading ×1
mapping ×1
nuget ×1
powershell ×1
skins ×1
toad ×1