小编Sim*_*mon的帖子

检查对象是否满足通用参数约束

我有一个类似于下面的界面:

public interface IInterface<T>
    where T : IInterface<T>
{
}
Run Code Online (Sandbox Code Playgroud)

现在我需要使用反射创建一个表示此接口的类型,例如

typeof(IInterface<>).MakeGenericType(someType);
Run Code Online (Sandbox Code Playgroud)

但是,我实际上并不知道什么类型的'someType'将在运行时之前,并且该类型可能无法作为通用接口的类型参数有效,因此MakeGenericType失败.

问题是,如何检查'someType'是否对泛型约束有效?

c# generics reflection

13
推荐指数
2
解决办法
3595
查看次数

使用子集合将RavenDb中的地图缩减为2个集合

我有两种不同的对象类型存储在RavenDb中,它们是父/子类型关系,在JSON中是这样的:

Account/1
{        
    "Name": "Acc1",
}

Items/1
{
    "Account": "Account/1",
    "Value" : "100",
    "Tags": [
       "tag1",
       "tag2"]
}

Items/2
{
    "Account": "Account/1",
    "Value" : "50",
    "Tags": [
       "tag2"]
}
Run Code Online (Sandbox Code Playgroud)

请注意,我不想将它们存储在同一文档中,因为一个帐户可能有数千个项目.

我正在尝试编写一个map/reduce索引,它会返回类似于:

{
    "Account": "Acc1",
    "TagInfo": [
        { "TagName" : "tag1",
          "Count" : "1",  //Count of all the "tag1" occurrences for acc1
          "Value" : "100" //Sum of all the Values for acc1 which are tagged 'tag1'
        },
        { "TagName" : "tag2",
          "Count" : "2",  //Two items are tagged "tag2"
          "Value" : …
Run Code Online (Sandbox Code Playgroud)

c# mapreduce ravendb

6
推荐指数
2
解决办法
1610
查看次数

急切地在 NHibernate 中加载 child 和 child-of-child 集合

NHibernate 试图加载一个小的数据层次结构时遇到了问题。我的域模型如下所示:

class GrandParent
{
    int ID{get;set;}
    IList<Parent> Parents {get; set;}
}

class Parent
{
    IList<Child> Children {get; set;}
}

class Child
{
}
Run Code Online (Sandbox Code Playgroud)

我想为给定的祖父母加载所有父母和孩子。这个 Linq-to-NH 查询创建了正确的 SQL 并按预期加载了 GrandParent:(该示例假设祖父母有 2 个父母,每个父母都有 2 个子对象 - 所以总共有 4 个子对象)。

var linq = session.Linq<GrandParent>();
linq.Expand("Parents");
linq.Expand("Parents.Children");
linq.QueryOptions.RegisterCustomAction(c => 
    c.SetResultTransformer(new DistinctRootEntityResultTransformer()));
var grandparent = (select g from session.Linq<GrandParent>()
                   where g.ID == 1
                   select g).ToList();

Assert(grandparent.Count == 1); //Works
Assert(grandparent.Parents.Count == 2); //Fails - count = 4!
Run Code Online (Sandbox Code Playgroud)

Grandparent.Parents 集合包含 4 个项目,其中 2 个是重复的。似乎 DistinctRootEntityResultTransformer …

c# nhibernate linq-to-nhibernate eager-loading

5
推荐指数
1
解决办法
2099
查看次数

如何在ASP.NET MVC中选择表行

我正在努力找出在MVC中做某事的正确方法,这在WebForms中并不困难,我希望有人能够指出我正确的方向.

基本上,我正在显示数据表,用户应该能够选择零行或多行.当他们按下提交时,我希望我的控制器知道哪些行已被选中,因为这将影响屏幕上的其他数据.

我的视图如下所示:

    <form action="/Summary/Index" method="post">
    <table>
        <thead>
            <tr>
                <th></th>
                <th>Name</th>
                <th>Age</th>
            </tr>
        </thead>
        <tbody>
            <% foreach (Person p in Model)
               { %>
            <tr>
                <td>
                    <input type="checkbox" name="" /> <!-- HOW SHOULD THIS BE RENDERED? -->
                </td>
                <td><%= p.Name %></td>
                <td><%= p.Age %></td>
            </tr>
            <% } %>
        </tbody>
    </table>

    <input type="submit" value="Update" />

</form>
Run Code Online (Sandbox Code Playgroud)

因此,当单击提交按钮时,表单将发布到当前URL.请注意,模型"Person"只是一个ViewModel,因此我可以根据需要添加任何必要的UI相关属性.我应该向Person添加一个'Selected'属性并让我的控制器获取Person的列表/数组并检查每个属性的选定属性吗?

请注意,我需要一个无需JavaScript的解决方案,我不希望我的控制器关注如何检索复选框的值 - 如果需要,我很乐意编写自定义的ModelBinder.

任何人都可以告诉我如何做到这一点吗?

非常感谢,西蒙.

c# asp.net asp.net-mvc

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

Sprache 中的递归表达式解析

我正在构建一个 Sprache 解析器来解析类似于 SQL 搜索条件的表达式。例如Property = 123Property > AnotherProperty

到目前为止,这两个示例都有效,但是我正在努力弄清楚我需要做什么才能允许 ANDing/ORing 条件和括号。

到目前为止,基本上我有这个:

private static readonly Parser<string> Operators =
    Parse.String("+").Or(Parse.String("-")).Or(Parse.String("="))
        .Or(Parse.String("<")).Or(Parse.String(">"))
        .Or(Parse.String("<=")).Or(Parse.String(">=")).Or(Parse.String("<>"))
        .Text();

private static readonly Parser<IdentifierExpression> Identifier = 
    from first in Parse.Letter.Once()
    from rest in Parse.LetterOrDigit.Many()
    select new IdentifierExpression(first.Concat(rest).ToArray());

public static readonly Parser<Expression> Integer =
    Parse.Number.Select(n => new IntegerExpression {Value = int.Parse(n)});

public static readonly Parser<SearchCondition> SearchCondition = 
    from left in Identifier.Or(Number)
    from op in Operators.Token()
    from right in Identifier.Or(Number)
    select new SearchCondition { Left = …
Run Code Online (Sandbox Code Playgroud)

c# parsing sprache

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

TypeScript中的枚举名称的`keyof`

给定一个像这样的模块:

export module Common.Enums {
  export enum Enum1 { Item = 0 }

  export enum Enum2 { Item = 0 }

  export enum Enum3 { Item = 0 }
}
Run Code Online (Sandbox Code Playgroud)

我想用一个字符串属性定义一个接口,该属性限制为枚举之一的名称,例如:

interface Test {
    enumName: keyof Common.Enums; // <<< This doesn't work, but something like that is needed
    enumName2: 'Enum1' | 'Enum2' | 'Enum3'; // <<< This does work, but is undesirable

}
Run Code Online (Sandbox Code Playgroud)

但是-有很多枚举(它们都是生成的),所以我不想硬编码'Enum1' | 'Enum2' | 'Enum3'

typescript

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

Seafile 是否将同步文件存储在任何地方?

我正在使用 Seafile(在 docker 上)将一些文件同步到 Synology nas,并且一切正常。我创建了一个指向/shared容器中文件夹的外部文件夹。

我想我已经知道答案了,但是同步到服务器的文件是否“正常”存储在某处?即,如果我同步一个名为“photos”的文件夹并且其中包含“a.jpg”,我是否能够在 Seafile 服务器上找到该文件?

问题的原因是我想备份同步的原始文件,而不是备份seafile数据库等。

(我知道syncthing可以满足我的要求,所以我可能会选择使用它,只是想确认我的理解)

谢谢

seafile-server

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

如何通过自定义控件添加css时停止Visual Studio css intellisense中断

我创建了一个简单的Asp.Net自定义控件,它自动组合所有正确的样式表以发送给客户端(基于浏览器类型/版本/等).

但是,因为在设计时头标签看起来像这样......

<head>
    <cc:CssControl runat="server" />
</head>
Run Code Online (Sandbox Code Playgroud)

... VS无法为css类名提供intellisense.我已经尝试为控件创建一个ControlDesigner,通过覆盖GetDesignTimeHtml()返回一些硬编码的<link />,但这似乎也没有帮助.

有人有任何想法吗?

谢谢,

西蒙.

css intellisense custom-server-controls visual-studio-2008

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

从 TypeScript 中的接口获取参数类型

给定一个这样的接口:

interface IDelegates {
  delegateOne: (name: string, age: number) => string;
  delegateTwo: (date: Date) => number;
}
Run Code Online (Sandbox Code Playgroud)

如何根据接口属性名称定义一个接受正确委托类型的函数的方法?

我可以获得一个仅包含我想要的属性的类型,Pick<IDelegates, 'delegateOne'>该属性返回一个类型:

{
  delegateOne: (name: string, age: number) => string;
}
Run Code Online (Sandbox Code Playgroud)

但我不知道是否有办法做Parameters<Pick<IDelegates, 'delegateOne'>>

我明白为什么这行不通,但是可能有办法吗?基本上我需要什么,PickOne返回属性“delegateOne”,而不是包含该属性的类型。

typescript

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

带有进度通知的长时间运行的后台任务

我有一个 ASP.NET 网站,其中包含许多长时间运行(5 分钟到 2 小时)的用户启动的任务。我希望每个用户都能够看到自己作业的进度,并且能够关闭浏览器并稍后返回。

当前的计划是在每个作业启动时将其存储在数据库中,并将消息发布到 RabbitMQ 队列,Windows 服务将接收该消息并开始处理该作业。

但是,我不确定将进度信息从服务传递回网络服务器的最佳方法?我看到两个选择:

  • 将进度信息存储在数据库中,并通过网络应用程序对其进行轮询
  • 在网络服务器中有一个 RabbitMQ 消费者,并让 Windows 服务将进度消息发布到该队列

我倾向于第二种选择,因为我真的不想通过定期轮询/写入进度信息来增加数据库的更多开销。然而,有很多关于使用 RabbitMQ(作为消费者)的警告- 因为我没有发送重要消息(如果进度消息没有被处理也没关系),我想知道这是否重要?这并不是困难(著名的遗言)。

这个选项听起来合理吗?还有更好的选择吗?

architecture asp.net windows-services rabbitmq long-running-processes

0
推荐指数
1
解决办法
1505
查看次数