小编Rem*_*yth的帖子

在泛型类型参数上调用静态方法

我本来希望做这样的事情,但它在C#中似乎是非法的:


public Collection MethodThatFetchesSomething<T>()
    where T : SomeBaseClass
{
    return T.StaticMethodOnSomeBaseClassThatReturnsCollection();
}
Run Code Online (Sandbox Code Playgroud)

我得到一个编译时错误:"'T'是'类型参数',在给定的上下文中无效."

给定泛型类型参数,如何在泛型类上调用静态方法?在给定约束的情况下,静态方法必须可用.

c# generics

99
推荐指数
5
解决办法
7万
查看次数

为什么GetProperty找不到它?

我正在尝试使用反射从类中获取属性.以下是我所看到的一些示例代码:


using System.Reflection;
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            PropertyInfo[] tmp2 = typeof(TestClass).GetProperties();
            PropertyInfo test = typeof(TestClass).GetProperty(
               "TestProp", BindingFlags.Public | BindingFlags.NonPublic);
        }
    }

    public class TestClass
    {
        public Int32 TestProp
        {
            get;
            set;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我追溯到这一点时,这就是我所看到的:

  • 当我使用获取所有属性时GetProperties(),结果数组有一个条目,用于属性TestProp.
  • 当我尝试TestProp使用时GetProperty(),我得到null.

我有点难过; 我无法在MSDN中找到任何关于GetProperty()向我解释此结果的内容.有帮助吗?

编辑:

如果我添加BindingFlags.InstanceGetProperties()通话中,则找不到属性,句点.这更加一致,并使我相信TestProp由于某种原因不被视为实例属性.

那为什么会这样?我需要对该属性做什么才能将此属性视为实例属性?

c# reflection properties

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

是否可以将列默认设置为SQL Server的Ne​​wId()?

在fluentMigrator中,是否可以将列默认设置为函数?

具体来说,我将一个uniqueidentifier(Guid)列添加到已包含数据的SQL Server 2008表中,它将成为必填字段 - 是否可以将默认值设置为NewId()函数?

fluent-migrator

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

FluentMigrator迁移成功,但没有更改DB

我必须遗漏一些非常基本的东西.

我正在研究一个遗留项目,我正在尝试将FluentMigrator引入混合,因为我有一些有趣的数据库更改和数据迁移,我认为使用此工具会更容易.

对于初始迁移,我只想按原样将数据库升级到当前的生产版本.为了简化初始迁移,我编写了SQL Server 2008数据库脚本,并且迁移将脚本化命令作为一系列SQL命令执行.

为了测试它,我创建了一个完全空的数据库,并尝试使用以下命令行运行它:

> migrate -a "C:\My\Project\Path\bin\debug\Rds.MyProjName.DBMigrations.dll" 
-db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2008;Initial Catalog=myNewDbName;
Integrated Security=SSPI" -version=20100901000000
Run Code Online (Sandbox Code Playgroud)

指定的版本是第一个迁移类的Migration属性的时间戳.

在命令行,一切似乎都运行正常 - 整个脚本缩放,结束时:

-- CreateProductionDbCircaSep2010: migrated
Run Code Online (Sandbox Code Playgroud)

但是,当我看一下数据库时,它仍然是空的.绝对没有什么在那里.My Up方法如下所示:

public override void Up()
{
    var cmds = LoadEmbeddedResources
        .GetEmbeddedResource("scripted_db_2010-09-01.sql")
        .AsString()
        .ParseCommands();

    foreach (var c in cmds) {
        Execute.Sql(c);
    }

    CreateReferenceData();
}
Run Code Online (Sandbox Code Playgroud)

(仅供参考,我正在解析脚本而不是按原样运行它,因为我开始使用Migrator.Net之前发现它已经死了,而且已经设置好了.)

任何人都可以帮我一把吗?它几乎看起来像是一个事务没有提交,或者某个命令行选项让迁移执行干运行已打开,但我看不到它......

编辑:我尝试过的其他事情

为了确认连接字符串是否正在使用我期望的数据库,我重命名了数据库,然后按预期出现了登录错误.

为了进一步测试,我减少了脚本的长度,并尝试使用它来执行它

public override void Up()
{
    Execute.Script(@"..\Resources\test.sql"); 
}
Run Code Online (Sandbox Code Playgroud)

而不是逐个命令,但我得到相同的结果.这是该测试的输出(注意,我编辑了pathes等):

C:\My\Project\Path\FluentMigrator.Net\ >migrate -a "C:\My\Project\Path\bin\debug
\My.Project.DBMigrations.dll" -db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2
008;Initial Catalog=myNewDbName;Integrated Security=SSPI" -version=2010090100000
0
Using Database …
Run Code Online (Sandbox Code Playgroud)

.net fluent-migrator

9
推荐指数
3
解决办法
3547
查看次数

可以在迁移中添加级联删除规则吗?

在FluentMigrator迁移中,如果我正在定义关系,请说:

Create.Table("RelatedTable")
    .WithColumn("RelatedTableId").AsGuid().PrimaryKey()
    .WithColumn("MainTableId").AsGuid().NotNullable();
    .WithColumn("SomeInfo").AsString().NotNullable();

Create.Table("MainTable")
    .WithColumn("MainTableId").AsGuid().PrimaryKey()
        .ReferencedBy("FK_RelatedTable_RelatedTableId", "RelatedTable", "MainTableId")
    .WithColumn("AField").AsInt64().NotNullable()
    .WithColumn("AnotherField").AsString().NotNullable();
Run Code Online (Sandbox Code Playgroud)

有没有办法在它们之间定义级联删除类型的关系?例如,如果您从MainTable中删除了某些内容,那么任何相关记录也会被删除?

fluent-migrator

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

MassTransit中处理程序和消费者之间的区别

MassTransit中处理程序和消费者之间有什么区别?我见过使用其中一个的例子,但从概念上讲,我不清楚两者之间的差异以及为什么要选择其中一个.

masstransit

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

如何在Mercurial命令中包含多个文件模式

Windows上的Mercurial 1.7.5.

我有一些我修改过的文件,并希望将它们分成两个提交.为此,我正在使用-I(或--include)选项.文件说:

-I --include PATTERN [+]     include names matching the given patterns
Run Code Online (Sandbox Code Playgroud)

我还没弄清楚如何包含多个模式.我试过了:

hg status -I C:\folderToSolution\Project1\**.cs C:\folderToSolution\Project3\**.cs
hg status -I C:\folderToSolution\Project1\**.cs +C:\folderToSolution\Project3\**.cs
Run Code Online (Sandbox Code Playgroud)

(在提交之前使用status来测试我的模式.)

在选项中获取多个模式的语法是什么?

mercurial

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

你如何使用分离的QueryOver实例?

这篇NHibernate博客文章指出了如何创建(使用)分离的QueryOver查询(类似于).然而,看着这一点,它看起来并不像我.DetachedCriteriaQueryOver.Of<T>()

使用DetachedCriteria,我会创建我的实例并设置它,但我需要,然后调用GetExecutableCriteria()然后分配会话并执行查询.使用"分离" QueryOver,大多数API都不可用(即,添加限制,连接,排序等等),直到我打电话GetExecutableQueryOver,这需要一个ISessionIStatelessSession,此时您不再断开连接.

你如何使用分离的QueryOver实例?

编辑:

实际问题与我如何存储分离的QueryOver实例有关:

public class CriteriaQuery<T>
{
    internal protected QueryOver<T> _QueryOver { get; set; }

    public CriteriaQuery()
    {
        _QueryOver = QueryOver.Of<T>();
    }

    // Snip
}
Run Code Online (Sandbox Code Playgroud)

它应该是一个QueryOver<T, T>.

nhibernate queryover

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

使用httlib的HTTPSConnection和PKCS#12证书时出错

我正在尝试使用httplib的HTTPSConnection进行客户端验证,使用PKCS#12证书.我知道证书很好,因为我可以在MSIE和Firefox中使用它连接到服务器.

这是我的连接功能(证书包含私钥).我把它简化为基础知识:

def connect(self, cert_file, host, usrname, passwd):
    self.cert_file = cert_file
    self.host = host

    self.conn = httplib.HTTPSConnection(host=self.host, port=self.port, key_file=cert_file, cert_file=cert_file)

    self.conn.putrequest('GET', 'pathnet/,DanaInfo=200.222.1.1+')
    self.conn.endheaders()
    retCreateCon = self.conn.getresponse()

    if is_verbose:
        print "Create HTTPS connection, " + retCreateCon.read()
Run Code Online (Sandbox Code Playgroud)

(注意:请不要对硬编码路径发表评论 - 我试图让它首先工作;之后我会做得很好.硬编码路径是正确的,因为我在MSIE和Firefox中连接它我更改了帖子的IP地址.)

当我尝试使用PKCS#12证书(.pfx文件)运行它时,我得到了似乎是openSSL错误.这是整个错误回溯:

  File "Usinghttplib_Test.py", line 175, in 
    t.connect(cert_file=opts["-keys"], host=host_name, usrname=opts["-username"], passwd=opts["-password"])
  File "Usinghttplib_Test.py", line 40, in connect
    self.conn.endheaders()
  File "c:\python26\lib\httplib.py", line 904, in endheaders
    self._send_output()
  File "c:\python26\lib\httplib.py", line 776, in _send_output
    self.send(msg)
  File "c:\python26\lib\httplib.py", line 735, in send
    self.connect()
  File "c:\python26\lib\httplib.py", line 1112, …

python authentication certificate pkcs#12 httplib

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

'index'和'list-index'有什么区别?

对于NHibernate中的集合映射以及列表等有序集合,必须映射索引列字段.我刚才注意到,从NHibernate 2.0开始,似乎还有一个"list-index"属性,我相信它可以用在索引的位置.

除了能够使用"list-index"指定基本索引值之外,两者之间是否存在差异?使用一个VS另一个有什么好处?

nhibernate

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

IProcessHostPreloadClient参数值来自哪里?

查看IProcessHostPreloadClient的Preload方法,可以提供string []参数,在MSDN中描述为"初始化应用程序的数据".但是,没有关于此数据来源的信息,也没有关于如何为其分配值的信息.

这些数据来自何处,我们如何为其分配值?

.net iis

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

如何编写一个在Nancy中接受JSON的post方法以及如何将其调用为C#客户端?

我在南希写了以下模块

    public class CategoryModule : NancyModule
{
    public CategoryModule()
    {
        //At this moment just Show Hello world
        Get["/"] = _ => { return "Nancy says hello!"; };
        //Get["/"] = parameters => "Hello World!";
        GetCategories();
        SetCategory();
    }


     void GetCategories()
    {
        Get["/Catergories"] = _ =>
        {

            var catergoryRepository = new CategoryRepository();
            var categorycollection = catergoryRepository.GetCategoryInfo();
            return Negotiate.WithStatusCode(HttpStatusCode.OK).WithModel(categorycollection.ToArray());
        };
    }

     void SetCategory()
     {
         Post["/Catergories/{categryName:string}"] = _ =>
         {
             var catergoryModel = this.Bind<Category>();
             catergoryModel.PK_CategoryId = Guid.NewGuid();
             catergoryModel.CategoryName = _;
             return HttpStatusCode.OK;
         };
     }
} …
Run Code Online (Sandbox Code Playgroud)

c# rest mono nancy

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