小编Ale*_*sev的帖子

C#库用随机数据填充对象

我想用随机数据填充我的对象(用于测试目的),是否有一个库可以做到这一点?

某种反射方法,它将遍历对象图并初始化原始属性,如(string,int,DateTime等)(但深入的方式,包括集合,子对象等)

c#

48
推荐指数
4
解决办法
4万
查看次数

用于多参数构造函数的Unity InjectionConstructor仅覆盖单个构造函数

我有一个像这样的构造函数的类:

public class Bar
{
    public Bar(IFoo foo, IFoo2 foo2, IFoo3 foo3, IFooN fooN, String text)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我想在Unity中注册Bar并为文本提供值:

unity.RegisterType<Bar, Bar>(new InjectionConstructor("123"));
Run Code Online (Sandbox Code Playgroud)

但是我不能这样做,因为Bar没有单个参数构造函数.

有没有办法为文本提供一个值而不指定所有其他参数ResolvedParameter<IFooN>等.我真的不喜欢它,很多代码,每次我更改Bar的构造函数我需要添加另一个ResolvedParameter

c# unity-container

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

用于文本算法的.NET库?

你知道任何用于文本算法的.NET库吗?
特别是我对字符串匹配和全文搜索算法感兴趣

  • Bitap算法
  • Levenshtein距离
  • Damerau-Levenshtein距离

我知道我提到的那个代码非常简单,但有数百种文本算法,我不想自己编写代码.
如果没有已知的这种.NET库,你可以提一下C,C++库,编码包装器比零编码更容易.

.net c# algorithm text full-text-search

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

什么时候应该在重写方法中调用base.Method(),以及在团队中编写代码时如何标记?

当使用一些框架/ api时,有时候你不清楚是否必须调用base.Method如果你覆盖它,例如你可以非常肯定你应该在覆盖事件调用器时调用base.Maethod()来传播事件在其他情况下,特别是当没有可用的源代码且没有评论时,它可能不那么清楚.

我wounder其他程序员如何决定他们应该调用基方法或没有在这种情况下,如果你是要写一些框架如何通知你期望的基础方法,在虚拟的成员被称为与否其他程序员.

c# virtual overriding

24
推荐指数
3
解决办法
8788
查看次数

DDD(域驱动设计),如何处理实体状态更改,以及封装需要处理大量数据的业务规则

public class Person
{
    public IList<String> SpecialBirthPlaces;
    public static readonly DateTime ImportantDate;
    public String BirthPlace {get;set;}

    public DateTime BirthDate
    {
        set
        {
            if (BirthPlace!=null && 
                value < ImportantDate && 
                SpecialBirthPlaces.Contains(BirthPlace))
            {
                BirthPlace = DataBase.GetBirthPlaceFor(BirthPlace, value);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是尝试在我的域模型中封装一个简单的规则.我试图捕获的规则是:当出于某种原因,我们更新一个人的出生日期(例如,原始用户输入中存在错误)时,我们需要检查该人的出生地并将其替换为来自其他人的其他值.数据库,如果它在我们的数据库中列为特殊的出生地.

但是,我实现它有两个问题:

  1. 此规则修改域实体状态(属性),我需要在用户界面中反映此更改.我的域名模型是POCO.我可以把这个逻辑放在ViewModel中,但这是错误的,因为它不是UI逻辑.这是我需要捕获的一个重要的域规则.

  2. 我的SpecialBirthPlaces列表非常大,每次我从数据库中获取客户时我都不想填充它.此外,当规则得到满足时,我需要替换Birthplace.正如我所说,特殊的出生地和替代品的列表非常大,并存储在数据库中.

如何在DDD风格中实现我需要的逻辑?

c# domain-driven-design

22
推荐指数
1
解决办法
6460
查看次数

将Func <T>传递给Func <object>

我想弄清楚如何传递Func<T>给我Func<object>

public void Foo<T>(Func<T> p) where T:class
{
    Foo(p);
}

public void Foo(Func<object> p)
{

}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,它适用于.NET 4.0类库,但在Silverlight 4类库中不起作用. 实际上我希望它在Silverlight中工作,我有输入参数,如Func<T, bool>

c# generics silverlight delegates

16
推荐指数
2
解决办法
5374
查看次数

OAuth不安全或我不理解?

我正在考虑我的REST Web服务API的安全性,并决定看看其他大型服务以及他们如何做到这一点.作为一个例子,我决定研究Twitter的OAuth.阅读初学者指南后,我有点困惑和震惊.

据我了解,服务提供商有责任对用户进行身份验证并向用户显示消费者要求的访问权限(例如,它希望只读访问特定资源).但我看到服务提供商没有告知用户访问消费者要求的类型(甚至现在显示消费者的身份).问题的第二部分是消费者可以在IFrame中显示自己的自定义提供者服务身份验证表单,只是隐藏访问详细信息,他们只是窃取您的密码,或者请求无限制地访问您的资源,他们基本上可以做任何他们想要的,欺骗用户有很多方法.

举个例子,我们来看看LinkedIn吧.他们在自己的表单中请求您的gmail用户名和密码,而您不知道他们将如何使用它.他们可以窃取它并存储在他们的数据库中,他们可以将OAuth与它一起发送到gmail(并且他们不会向gmail的页面显示他们请求的访问类型的信息),他们可以使用这些信息做任何他们想做的事情.

我想说的不是OAuth通信协议不安全,而是有很多方法可以不恰当地使用它来欺骗用户并获取他的凭据.

BTW在OAuth协议本身存在一些安全漏洞:(http://oauth.net/advisories/2009-1/)我很确定还有更多,但没有人关心找到它们.

security authentication rest authorization oauth

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

C#基于角色的安全性

我有一个包含我的数据库访问层的类库,我在所有与这个数据库一起工作的项目中使用它,现在我想在这个库中集成安全性,这样我就可以为不同的安全角色返回不同的数据.使用.NET内置安全性实现此目的的最佳方法是什么?我正在考虑使用System.Security.Permissions.PrincipalPermission但我看不出它如何帮助我,因为任何使用我的库的人都可以编写像这样的客户端应用程序

GenericIdentity genericIdentity = new GenericIdentity("User");
GenericPrincipal genericPrincipal = new GenericPrincipal(genericIdentity, new[] { "Administrator" });
Thread.CurrentPrincipal = genericPrincipal;
Run Code Online (Sandbox Code Playgroud)

他们将通过我所有的主要许可要求

PrincipalPermission principalPermission = new PrincipalPermission(null, "Administrator");
principalPermission.Demand();
Run Code Online (Sandbox Code Playgroud)

甚至没有验证.要么我不理解这个安全模型,要么它只是不保护任何东西.

.net c# security

9
推荐指数
1
解决办法
2761
查看次数

干净的域驱动设计(DDD)是一个乌托邦吗?

我想我读过关于DDD的所有书以及如何在C#中应用它(3-5本书,不记得它是几年前).

但是在过去的两年里,我在所有项目中使用了贫血领域模型并且运作良好.实际上我从未尝试过实现纯域模型,而且我从未见过使用干净域模型方法的一段代码.

例如,本书中有关DDD的代码不遵循DDD风格.以Tim MacCarthy的代码为例,关于DDD http://dddddsds.de,看看他的域名对象,他们对任何行为都很干净,只是DTO是他集成到域对象中的唯一东西就是验证,如果我在DDD中正确记住你的域不应该处于无效状态,所以你应该防止设置无效值并抛出异常,而不是允许设置它们并在某些时候进行验证.

与其他书籍和示例代码相同的情况,它们都非常简单,只显示一个具有属性的类,最多可以找到一组插入\ remove子对象的方法,这些方法设置了父属性.例如,我几乎看不到使用域事件或将服务注入域对象的代码.

2003年Martin Fowler写了一篇文章告诉我们,贫血领域模型是一件坏事http://www.martinfowler.com/bliki/AnemicDomainModel.html 8年过去了,我认为贫血模型现在非常流行(它演变为分层架构) ).并且在3层RIA开发中使用了很多.

所以我的主要问题是干净的DDD乌托邦?它死了吗?包括我在过去3年里看到的所有代码是分层架构(在我看来,它是本质上贫血的领域模型).如果存在,我非常希望看到一些干净的DDD代码.

c# architecture oop domain-driven-design

9
推荐指数
1
解决办法
1701
查看次数

NHibernate和运算符重载

public class Version
{
    public byte Major { get; set; }
    public byte Minor { get; set; }
    public short Build { get; set; }
    public int Revision { get; set; }

    private long NumVersion
    {
        //get {}
        //set {}
        //Some logic that make Int64 number that represents this verion
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我希望能够编写类似的查询

Where<Product>(t=>t.Version > new Version(1,2,0,0))

在Product表中,我只存储Int64 NumVersion字段,因此Version属性被映射为组件,目前我查询它 Where<Product>(t=>t.Version.NumVersion > new Version(1,2,0,0).NumVersion)

在C#中,我可以1.重载比较运算符,2.使其隐式转换为:

public static implicit operator long(Version v)
{
    return v.NumVersion;
}
Run Code Online (Sandbox Code Playgroud)

这将允许我比较Version对象,但是如何让NHibernate理解这一点并生成正确的SQL?

c# nhibernate

9
推荐指数
1
解决办法
273
查看次数