小编der*_*lap的帖子

调用泛型类的方法

这是上下文:

我尝试编写一个映射器,用于动态地将我的DomainModel对象转换为ViewModel Ojects.我得到的问题是,当我尝试通过反射调用泛型类的方法时,我得到了这个错误:

System.InvalidOperationException:无法对ContainsGenericParameters为true的类型或方法执行后期绑定操作.

有人可以帮助我找出错误在哪里吗?这将不胜感激

这是代码(我试图简化它):

public class MapClass<SourceType, DestinationType>
{

    public string Test()
    {
        return test
    }

    public void MapClassReflection(SourceType source, ref DestinationType destination)
    {
        Type sourceType = source.GetType();
        Type destinationType = destination.GetType();

        foreach (PropertyInfo sourceProperty in sourceType.GetProperties())
        {
            string destinationPropertyName = LookupForPropertyInDestinationType(sourceProperty.Name, destinationType);

            if (destinationPropertyName != null)
            {
                PropertyInfo destinationProperty = destinationType.GetProperty(destinationPropertyName);
                if (destinationProperty.PropertyType == sourceProperty.PropertyType)
                {
                    destinationProperty.SetValue(destination, sourceProperty.GetValue(source, null), null);
                }
                else
                {

                       Type d1 = typeof(MapClass<,>);
                        Type[] typeArgs = { destinationProperty.GetType(), sourceType.GetType() };
                        Type constructed = …
Run Code Online (Sandbox Code Playgroud)

.net c# generics reflection asp.net-mvc

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

ASP.NET MVC会话状态使用状态分区,MongoDB或Memcached还是......?

我的团队目前正在为我们公司(Amilia.com)构建一个新的SaaS应用程序.我们处于"alpha"版本,应用程序构建为部署在Web场中.

对于我们的会话提供者,我们使用的是Sql Server模式(在DEV和TEST中),它似乎不是"可扩展的",因此我们正在寻找在asp.net中处理会话的最佳解决方案(在我们的例子中是mvc3).我们目前正在使用Sql Server,但由于许可证成本,我们希望切换到其他系统.

我们的目标是20 000 [EDITED,之前是100k]并发用户.在会话中,我们存储GUID,字符串和Cart对象(我们尝试尽可能少地保留它,这个对象允许我们在每个请求时保存3个查询).

以下是我发现的不同解决方案:

ASP.NET内置解决方案:

没有会话:在我们的案例中是不可能的

进行中模式:不能在webfarm中使用.(消除)

StateServer Mode:可以在webfarm中使用,但如果服务器出现故障,我会丢失所有会话.(消除)

具有使用多个服务器的PartitionResolver的StateServer模式(http://msdn.microsoft.com/en-ca/magazine/cc163730.aspx#S8)如果我看不清楚,如果其中一个服务器出现故障,只有我的一部分用户将失去他们的会议.

SqlServer Mode:可以在webfarm中使用,如果服务器出现故障,我可以恢复我的会话,但过程非常慢.而且,该数据库在负载很重的情况下成为瓶颈.

使用多个服务器的PartitionResolver的SqlServer模式(http://www.bulletproofideas.net/2011/01/true-scale-out-model-for-aspnet-session.html):如果其中一个服务器出现故障,只有一个部分用户将失去会话.如果用户在停机时间之间没有做任何事情,他将恢复他之前的会话,否则他将被重定向到登录屏幕.

定制解决方案

使用MongoDB作为会话存储(http://www.adathedev.co.uk/2011/05/mongodb-aspnet-session-state-store.html)这似乎是一个很好的权衡,但我对nosql的了解非常简陋我看不出缺点.

使用Memcached:问题与StateServer模式相同,如果memcached服务器出现故障,我的所有会话都将丢失.此外,我认为Memcached并不专用于存储会话状态?

使用分布式memcached,如ScaleOut(http://highscalability.com/product-scaleout-stateserver-memcached-steroids):似乎是最好的解决方案,但它需要花钱.

使用repcached和memcached(http://repcached.lab.klab.org/),我从未见过该解决方案的实现.

我们可以轻松地访问Azure并使用它提供的工具,但我们只有一个应用程序,因此如果微软将价格提高一倍,我们会立即将基础设施成本翻倍(但这是另一个主题).

那么,最好的方法是什么,或者至少你对此有什么看法?

asp.net-mvc performance session scalability

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

Git push heroku master 什么都不做

我在 Windows 7 上。

我遵循了有关 heroku 的文档:https ://devcenter.heroku.com/articles/nodejs

当我执行

git push heroku master

它完全没有任何作用,我没有收到任何错误。我试图重新生成我的 ssh 密钥,删除所有内容并再次执行。总是一样。

抱歉提供的信息太少,但由于我没有错误消息,我真的很难弄清楚......

heroku node.js

5
推荐指数
2
解决办法
1641
查看次数

命名约定 - isEnable 与 isDisable

假设您正在使用 API,并且您需要设置一个值来启用或禁用组件。

你更愿意拥有:

control.isEnable = true
Run Code Online (Sandbox Code Playgroud)

或者

control.isDisable = false
Run Code Online (Sandbox Code Playgroud)

Imo,第一个似乎更“直观”,但你知道为什么吗?

boolean coding-style naming-conventions

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