我们的Web应用程序项目中引用了几个外部DLL文件.我们有一个用于在托管服务器上安装的部署项目.当我们使用.NET 3.5和Visual Studio 2008时,DLL文件被复制到bin文件夹.由于我们已经升级到.NET 4和Visual Studio 2010,因此不再发生这种情况,并且由于无法找到引用,因此我们收到服务器错误.
CopyLocal设置为true,我在web.config中找不到任何内容,表明这是在其他地方设置的.
这个问题可能有点含糊不清,但这里也是如此.我刚刚开始进行单元测试,而且我似乎在挣扎于基本概念.
我正在测试一个检查数据库中是否存在记录的函数.如果没有,它会添加新记录并返回其ID.所以函数编写起来很简单.我可以考虑测试它的唯一方法是使用模拟框架来检查正确的属性/方法被调用正确的次数.
我正在努力的部分是我读过的所有内容都是先讨论编写测试然后再编写函数.但我觉得它只有在我首先编写函数然后编写反映函数内部工作的测试时才会起作用.
对此真的有一个黄金法则吗?
那么我应该测试多少基本的事务逻辑呢?
我正在使用我的服务的pre和post构建事件来卸载和安装服务.唯一的问题是,第一次另一个开发人员使用预构建事件时它失败了,因为尚未安装该服务.
我卸载的当前预构建事件是
%WinDir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil /u $(TargetPath)
Run Code Online (Sandbox Code Playgroud)
我该如何使用这ONLY时已经安装了服务卸载?
我正在WebBrowser control浏览登录页面并下载文件.由于我无法使用控件自动管理下载,因此我正在使用WebClient该类来尝试实现此目的.
问题是,由于WebClient浏览器不在同一个上下文/会话中,我正在下载的是安全错误屏幕.
我如何可以传递的范围内任何想法WebBrowser会话到WebClient?
有没有办法List<T>使用类似"Name desc"(相同DataTable.DefaultView.Sort)而不是Linq 的字符串进行排序?
我正在尝试替换DataTables,Lists我需要它来执行此操作以与旧代码兼容.
解
使用V4Vendetta的代码我能够创建这个扩展方法,测试似乎表明它正常工作.
public static void SortByString<T>(this List<T> list, string sortString)
{
if (sortString == null) return;
List<string> SortGroups = sortString.Split(',').ToList();
for (int i = SortGroups.Count - 1; i >= 0; i--)// sort from the last group first
{
string tempColumn = SortGroups[i].Trim().Split(' ')[0];
bool isAsc = SortGroups[i].Trim().Split(' ').Length > 1 ? SortGroups[i].Trim().Split(' ')[1].ToLower() == "asc" ? true : false : true;
PropertyInfo propInfo = typeof(T).GetProperty(tempColumn);
if …Run Code Online (Sandbox Code Playgroud) 我正在寻找一些关于我应该关注多少避免贫血领域模型的建议.我们刚刚开始使用DDD,并且正在努力解决有关简单设计决策的分析瘫痪问题.我们坚持在最新的点是一定的业务逻辑属于,比如我们有一个Order对象,它具有类似性质Status等.现在说我有像执行命令UndoLastStatus,因为别人犯了一个错误的命令,这不是那么简单因为只需更改Status其他信息就必须记录并更改属性.现在在现实世界中,这是一项纯粹的管理任务.所以我看到它的方式我有两个我能想到的选择:
选项1:将方法添加到订单中,以便类似Order.UndoLastStatus(),虽然这有点意义,它并不真正反映域.也是Order系统中的主要对象,如果涉及订单的所有内容都放在订单类中,事情就会失控.
选项2:创建一个Shop对象,并使用不同的服务代表不同的角色.所以,我可能有Shop.AdminService,Shop.DispatchService和Shop.InventoryService.所以在这种情况下,我会Shop.AdminService.UndoLastStatus(Order).
现在第二个选项我们有更多反映域的东西,并允许开发人员与业务专家讨论实际存在的类似角色.但它也走向了贫血的模式.一般来说哪种方式更好?
这是我第一次尝试这样的事情,所以希望这很简单.
我创建了一个WCF服务,它使用Entity Framework来访问数据库.我已经实现了UnitOfWork接口,因此我的服务可以使用EF,同时仍然可以测试.
这是我的服务:
public class ProjectService : IProjectService
{
private IUnitOfWork db = null;
public ProjectService(IUnitOfWork unitofwork)
{
db = unitofwork;
}
public int RegisterSite(int CPUID)
{
if (db.Servers.Count(x => x.CPUID == CPUID) > 0)
{
// do something
}
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的UnitOfWork界面:
public interface IUnitOfWork
{
IObjectSet<tblClient> Clients { get; }
IObjectSet<tblServer> Servers { get; }
IObjectSet<tblSite> Sites { get; }
IObjectSet<tblServerLog> ServerLogs { get; }
void Commit();
}
Run Code Online (Sandbox Code Playgroud)
当我使用此服务与a SQLUnitOfWork(使用EF)或InMemoryUnitOfWork(仅在内存对象)的具体实现时,它工作正常. …
我们正在将现有系统转换为 DDD,并且正在努力理解一些概念。
我们有一个名为 的聚合根,它具有和 等Animal属性。目前数据库有两个表,分别称为和,它们存储状态更改时有关动物的信息。这些表有时会删除记录,并且在从.StatusSourceStatusHistorySourceHistoryAnimalAnimalRepository
所以最大的问题是它们属于哪里?以下是我们的一些想法:
将它们作为不同的实体对象作为动物聚合的一部分。并具有允许更新它们的相应方法,例如:Animal.UpdateStatus(newStatus),这将使用对象添加到集合中new StatusHistory(this)。但如上所述,当为存储库获取现有动物时,很少需要这些,因此我们不希望存储库加载它们。我们目前没有使用 ORM,而是使用存储库内的表数据网关手动映射。
使每个历史实体成为聚合根。我们不喜欢这种做法,因为感觉我们并没有真正对领域进行建模,而只是朝着Active Record Pattern. 此外,为动物更新这些的任务必须位于动物实体之外。
我们可以尝试将这些历史组合成另一个聚合根,称为AnimalHistory其全部目的是维持动物的历史。但这又会改变将历史存储到动物以外的其他事物中的逻辑。可能是像这样的服务AnimalProcessingService,感觉我们可能正在走向贫血的设计。
我希望有另一种选择可以为我们提供更简洁的设计。
我试图基于传递给方法的异常类型参数抛出异常.
这是我到目前为止,但我不想指定每种例外:
public void ThrowException<T>(string message = "") where T : SystemException, new()
{
if (ConditionMet)
{
if(typeof(T) is NullReferenceException)
throw new NullReferenceException(message);
if (typeof(T) is FileNotFoundException)
throw new FileNotFoundException(message);
throw new SystemException(message);
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想做一些事情,new T(message)因为我有一个基本类型SystemException我会认为这是某种可能的.
我听说人们在IoC中谈论子容器,当我谷歌它时,我回到这里的问题让我想知道它们是什么.
什么是IoC子容器以及它们是如何使用的?
c# ×5
.net ×3
aggregate ×1
datatable ×1
domain-model ×1
installer ×1
list ×1
nunit ×1
rhino-mocks ×1
sorting ×1
unit-testing ×1
webclient ×1