小编sma*_*man的帖子

开源ASP.NET MVC CMS的评论/比较

我正在寻找ASP.NET MVC的开源CMS.我找到了MvcCms,N2和AtomicCMS.我正在寻找比较不同开源项目的任何建议,轶事,资源或文章,以便为我的项目找到最好的一个.我想找到有关不同项目的功能,可扩展性,相对可靠性和持续开发的信息.多谢你们.

c# asp.net asp.net-mvc review content-management-system

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

Linq表达式如何确定平等?

我正在考虑使用Linq Expression作为字典中的键.但是,我担心我会得到奇怪的结果,因为我不知道Linq表达式如何确定Equality.

派生自Expression的类是否比较值相等或引用相等?或者换句话说,

        Expression<Func<object>> first = () => new object(); 
        Expression<Func<object>> second = ()=>new object();
        bool AreTheyEqual = first == second;
Run Code Online (Sandbox Code Playgroud)

c# linq lambda expression linq-expressions

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

语言标记的正则表达式(由BCP47定义)

我需要BCP 47定义的语言标记的正则表达式.

我知道完整的BNF语法可以在http://www.rfc-editor.org/rfc/bcp/bcp47.txt上找到,我可以用它来编写我自己的语法,但希望有一个已经存在.

regex bnf

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

如何用反射读取方法体

是否有可能找到有关反射的Method主体的任何信息?

怎么样?

c# reflection methodinfo methodbase

10
推荐指数
1
解决办法
2682
查看次数

将字符串解析为LINQ查询

将LINQ字符串解析为查询的最佳实践方法是什么?

换句话说,转换最有意义的方法是:

 string query = @"from element in source
                  where element.Property = ""param""
                  select element";
Run Code Online (Sandbox Code Playgroud)

 IEnumerable<Element> = from element in source 
                        where element.Property = "param"
                        select element;
Run Code Online (Sandbox Code Playgroud)

假设source指的是IEnumerable<Element>IQueryable<Element>在本地范围内.

.net c# linq iqueryable linq-query-syntax

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

IIS站点向浏览器发送错误详细信息需要什么?

我在IIS 7.5上运行的ASP Classic站点上收到服务器错误.

我有"将错误发送到浏览器"设置为True,但我仍然收到以下错误屏幕: 500内部服务器错误. 您正在查找的资源存在问题,无法显示.

iis iis-7 asp-classic iis-7.5 windows-server-2008-r2

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

如何最有效地测试两个数组是否包含C#中的等效项

我有两个数组,我想知道它们是否包含相同的项目. Equals(object obj)不起作用,因为数组是引用类型.我在下面发布了我的尝试,但是因为我确定这是一项常见任务,我想知道是否有更好的测试.

    public bool ContainsEquivalentSequence<T>(T[] array1, T[] array2)
    {
        bool a1IsNullOrEmpty = ReferenceEquals(array1, null) || array1.Length == 0;
        bool a2IsNullOrEmpty = ReferenceEquals(array2, null) || array2.Length == 0;
        if (a1IsNullOrEmpty) return a2IsNullOrEmpty;
        if (a2IsNullOrEmpty || array1.Length != array2.Length) return false;
        for (int i = 0; i < array1.Length; i++)
            if (!Equals(array1[i], array2[i]))
                return false;
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

更新 - System.Linq.Enumerable.SequenceEqual并不是更好

我反映了源,并没有比较执行循环之前的长度.这是有道理的,因为该方法通常是IEnumerable<T>为a而不是为a 而设计的T[].

    public static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer)
    { …
Run Code Online (Sandbox Code Playgroud)

c# arrays comparison performance arraylist

10
推荐指数
1
解决办法
3968
查看次数

使用多个具体实现处理存储库模式中的查询?

这更像是学术上的好奇心,但我想弄清楚如何最好地完成以下内容.

想象一下你有一个Person物体的情况

public class Person {
    public string Name {get;set;}
    public int Age {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

和一个从一些持久性存储中检索它们的存储库合同......

public class IPersonRepository {
    public IEnumerable<Person> Search(*** SOME_METHOD_SIGNATURE ***);
}
Run Code Online (Sandbox Code Playgroud)

您的消费者应用程序实际上并不关心具体实现.它只是从Unity/Ninject中获取正确的具体实现并开始查询.

IPersonRespository repo = GetConcreteImplementationFromConfig();
repo.Search( ... );
Run Code Online (Sandbox Code Playgroud)

我想知道的是,你在这里使用的方法签名将是什么,无论实现如何,它都具有灵活性和可扩展性.

选项1.

public IEnumerable<Person> Search(Expression<Func<Person, bool>> expression);
Run Code Online (Sandbox Code Playgroud)

这很好,因为如果你使用LINQ Capable(例如EntityFramework)数据上下文,你可以直接将表达式传递给你的上下文.如果你的实现必须使用手工制作的存储过程/ sql/ADO.NET等,这个选项似乎就会失败...

选项2.

public IEnumerable<Person> Search(PersonSearch parameters);

public class PersonSearch {
    public int? Age {get;set;}
    public string FullName {get;set;}
    public string PartialName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这个看起来最灵活(在某种意义上它可以与Linq,Plain Old SQL一起使用).

但它只是"编写自己的查询语言"的臭味,因为您需要考虑消费者可能想要做的每一个可能的查询.例如,年龄> = 18 &&年龄<= 65 &&名字喜欢'%John%' …

linq generics repository

10
推荐指数
1
解决办法
1310
查看次数

持久表达有向图的最标准文件格式和符号是什么?

我有兴趣坚持个人有向图.这个问题不是要求一个全面的图形数据库解决方案,而是一个我可以用来保存和单个任意有向图的文档格式. 我不知道符号和文件格式是最明智的选择.

我主要担心的是:

  1. 表现力/灵活性 - 我希望能够表达不同类型的图表.虽然标准用例是一个简单的有向图,但应该可以表达树,循环图,多图.作为最低限度,我希望支持边缘和节点的标记和加权.用于描述高图边缘合成/超边缘的符号也是非常需要的,尽管我知道这些解决方案可能不存在.

  2. 类型系统独立 - 我有兴趣表示图形的结构质量.一些解决方案包括用于类型化边缘和节点的可扩展类型系统(例如RDF/OWL).如果有明确定义的类型元素到基元(节点/边缘/属性)的规范分解,我只会对这种表示感兴趣.我在这里要避免的是能够进行等效图的多个表示,其中等价是不可辨别的.

  3. 规范表示 - 应该有一种机制允许图形被规范地表示(以这种方式,规范表示的词汇等价可以用来确定等价).

  4. 独立呈现 - 我更喜欢一种不依赖于图表表示的符号.这将包括空间方向,颜色,字体等.我只对表示数据感兴趣.我不喜欢DOT语言,DGMLSVG(至少对于这个特定目的)的一个特征是关注视觉表示.

  5. 标准化/开放/兼容 - 我必须做的实施工作越少越好.如果格式是标准化的并且已经存在用于处理格式的可靠工具,则更优选.伴随这个要求是另一个,格式应该是高度兼容的.微软DGML的专有性质是我厌恶的原因,尽管Visual Studio工具和我主要使用.NET(现在)的事实.W3C发布RDF标准的事实是将RDF的有限子集视为代表性工具的动机.我也很欣赏GXLGraphML,因为它们有很好的文档xml模式,因此有助于将数据与任何兼容xml的软件包集成.

  6. 简单/可读性 - 我欣赏人类可读的语法和易于解释.我也很欣赏能够简化解析的表示.出于这个原因,我喜欢GML,但我担心它不够主流,不能成为一个现实的选择.我还会考虑JSONYAML的可读性,如果它们各自能够代表复杂(非DAG)结构的能力不是那么有限的话.

  7. 效率/简洁表示 - 值得考虑的是,我最终选择的任何格式都不可避免地必须通过某些网络进行持久化和转移.因此,文件大小是一个相关的考虑因素.

概观

我意识到我很可能无法找到满足我愿望清单上所有标准的解决方案.我只要求是最接近我想要的文件格式,并且不限制可扩展性不支持的用例.

rdf file-format directed-graph graphml data-structures

10
推荐指数
1
解决办法
1172
查看次数

锁定非静态字段有什么问题?锁定特定实例的正确方法是什么?

为什么锁定非静态字段被认为是不好的做法?

并且,如果我没有锁定非静态字段,那么如何锁定实例方法而不将该方法锁定在相同或派生类的所有其他实例上?

我写了一个例子来使我的问题更清楚.

public abstract class BaseClass
{

    private readonly object NonStaticLockObject = new object();
    private static readonly object StaticLockObject = new object();

    protected void DoThreadSafeAction<T>(Action<T> action)
        where T: BaseClass
    {
        var derived = this as T;
        if(derived == null)
        {
            throw new Exception();
        }
        lock(NonStaticLockObject)
        {
            action(derived);
        }
    }
}
public class DerivedClass :BaseClass
{
    private readonly Queue<object> _queue;
    public void Enqueue(object obj)
    {
        DoThreadSafeAction<DerivedClass>(x=>x._queue.Enqueue(obj));
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我对它进行了锁定StaticLockObject,那么该DoThreadSafeAction方法将被锁定所有派生的类的实例,BaseClass这不是我想要的.我想确保在锁定对象的特定实例时没有其他线程可以调用方法.

更新

谢谢大家的帮助:我发布了另一个问题,作为您提供的一些信息的后续跟进.由于您似乎精通这一领域,我发布了链接:此锁定和管理锁定异常的解决方案有什么问题?

c# multithreading deadlock locking thread-safety

9
推荐指数
2
解决办法
3381
查看次数