小编Vu *_*yen的帖子

为什么ReSharper建议我使类型参数T逆变?

ReSharper建议我通过改变这个来改变类型参数T contravariant:

interface IBusinessValidator<T> where T: IEntity
{
    void Validate(T entity);
}
Run Code Online (Sandbox Code Playgroud)

进入:

interface IBusinessValidator<in T> where T: IEntity
{
    void Validate(T entity);
}
Run Code Online (Sandbox Code Playgroud)

那么<T>和之间有什么不同<in T>?这里逆变的目的是什么?

让说我有IEntity,Entity,UserAccount实体.假设双方UserAccountName需要验证属性.

如何在此示例中应用逆变的用法?

c# resharper contravariance

35
推荐指数
2
解决办法
7835
查看次数

存储库模式是什么类型的?

总的来说,我知道有三种大型的设计模式

  1. 创作模式(工厂,单身等)
  2. 结构模式(复合,适配器,代理等)
  3. 行为模式(规范,命令等)

但我不知道我可以将Repository模式放入哪种类型.

存储库模式是否属于以上三种类型之一?或者它是在(2)和(3)模式的中间?

oop design-patterns repository repository-pattern

13
推荐指数
3
解决办法
3780
查看次数

SQL CLR触发器,如何通过透明代码调用关键代码使程序集受信任?

我已经潜入研究SQL CLR.不幸的是,我的第一个例子有透明代码调用安全代码的问题.

关键是我的SQL CLR触发器被视为透明代码.在触发器中,我使用Quartz来调用Quartz Windows服务:

var properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "ServerScheduler";

properties["quartz.scheduler.proxy"] = "true";
properties["quartz.scheduler.proxy.address"] = string.Format("tcp://{0}:{1}/{2}", "localhost", "555",
                "QuartzScheduler");

var schedulerFactory = new StdSchedulerFactory(properties);

IScheduler scheduler = schedulerFactory.GetScheduler();
Run Code Online (Sandbox Code Playgroud)

错误:

(135,1):SQL72014:.Net SqlClient数据提供程序:消息6522,级别16,状态1,过程AfterMarketSessionInserted,第1行在执行用户定义的例程或聚合"AfterMarketSessionInserted"期间发生.NET Framework错误:System.MethodAccessException :尝试通过安全透明方法 '.Database.Triggers.MarketSessionTriggers.AfterMarketSessionInserted()' 访问安全关键方法 'Quartz.Impl.StdSchedulerFactory..ctor(System.Collections.Specialized.NameValueCollection)' 失败.

程序集"数据库,版本= 1.0.5275.15169,Culture = neutral,PublicKeyToken = null"部分受信任,这使得CLR使其完全安全透明,而不管程序集本身是否有任何透明度注释. 为了访问安全关键代码,必须完全信任此程序集. System.MethodAccessException:at Database.Triggers.FinancialMarketSessionTriggers.AfterFinancialMarketSessionInserted()

--------------

为什么SQL CLR触发器代码被视为透明代码并且部分受信任?

如何使SQL CLR触发器代码不是透明代码或使其完全受信任?

我愿意接受建议.

c# sql-server security sqlclr

6
推荐指数
1
解决办法
2229
查看次数

C#优雅方式检查所有浅属性是否为null(或任何属性不为null)

当我读到Deep Null检查时,会出现这种担忧 ,有没有更好的方法?

还有这个

C#优雅的方法来检查属性的属性是否为null

假设我想检查所有属性是否为null或者是否有任何属性为null.(浅物业)

SearchCriteria对象:

Keyword (Searches Name and Description) != null ||
SectorId != null ||
IndustryId != null ||
HasOption != null ||
HasFutures != null ||
30 properties to go...
Run Code Online (Sandbox Code Playgroud)

我们可以看到,语法在某种程度上难以阅读.我想要类似的东西

SearchCriteria
.Has(criteria => criteria.Keywork)
.Has(criteria => criteria.SectorId)
.Has(criteria => criteria.HasOption)
.etc
Run Code Online (Sandbox Code Playgroud)

(如果我们想要以上所有属性都不为null)

要么

SearchCriteria
.Has(criteria => criteria.Keywork).Or()
.Has(criteria => criteria.SectorId).Or()
.Has(criteria => criteria.HasOption).Or()
.etc
Run Code Online (Sandbox Code Playgroud)

(如果我们想要任何属性为非null)

要么

SearchCriteria
.Has(criteria => criteria.Keywork).Or()
.Has(criteria => criteria.SectorId)
.Has(criteria => criteria.HasOption)
.etc
Run Code Online (Sandbox Code Playgroud)

(如果我们想要Keyword SectorId具有值并且 …

c#

4
推荐指数
1
解决办法
683
查看次数

什么是发行人/发行人的担保方式?

我是安全方式.NET安全方式的新手.我看到了很多关于声明和发行人等的内容,但我对这个定义感到困惑.

简单的英语,索赔是什么?索赔中的发行人/原始发行人是什么?

.net security wcf-security claims-based-identity claims

3
推荐指数
1
解决办法
1684
查看次数

使用Select(...)时运行select方法的次数.任何(...)?

首先,我有这个代码,如果满足条件,它将打破第二个循环.

因此,例如,如果第一次满足条件,则不会枚举第二循环的其他元素.

foreach (var evaluator in strategyEvaluators)
{
   foreach (var rule in concatedRules)
   {
        var isEntryRuleMet = evaluator.Evaluate(rule.Code);

        if (isEntryRuleMet)
        {
           matchedNames.Add(evaluator.Name);
           break;
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

但我也发现代码可以通过这种方式缩短:

foreach (var evaluator in strategyEvaluators)
{
   if (concatedRules.Select(rule=> evaluator.Evaluate(rule.Code)).Any(isEntryRuleMet => isEntryRuleMet))
   {
       matchedNames.Add(evaluator.Name);
   }
}
Run Code Online (Sandbox Code Playgroud)

请注意,对于第二种方式,我不知道该Select方法将运行多少次.

Select右后停止Any返回true?或者它是否已完成运行然后Any运行?

c# linq

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