小编Xav*_*nas的帖子

如何确定类型是否实现了具有C#反射的接口

是否反映在C#报价的方式来确定是否给予一些System.Type款型的一些接口?

public interface IMyInterface {}

public class MyType : IMyInterface {}

// should yield 'true'
typeof(MyType)./* ????? */MODELS_INTERFACE(IMyInterface);
Run Code Online (Sandbox Code Playgroud)

c# reflection interface

527
推荐指数
11
解决办法
20万
查看次数

我可以在Visual Studio 2012/2013/2015/2017中录制/播放宏吗?

显然从Visual Studio 2012中删除了宏.

是否有插件/扩展/工具可以让我录制和播放键盘宏(很像Visual Studio 2010中的录制/播放临时宏)?

例如,我通常会在将代码从一种语言转换为另一种语言时使用宏,或者从文本列表中快速生成属性等.

macros visual-studio-2013 visual-studio-2015 visual-studio-2017 visual-studio-2019

189
推荐指数
7
解决办法
8万
查看次数

从Visual Studio浏览.NET Framework源代码

我知道我可以设置Visual Studio来通过.NET框架源代码进行调试.

但有没有一种方法可以在不调试时浏览代码 - 即能够按F12或"转到定义"?

我认为如果Visual Studio中没有内置该功能,那么可能会有一个插件可能会添加它?

.net visual-studio

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

将SQL Server的CONTAINS()导入为模型定义的函数

我试图在我的Entity Framework模型中导入SQL Server的CONTAINS()函数,以便我可以在我的LINQ查询中使用它.

我已将此添加到我的EDM中:

<Function Name="FullTextSearch" ReturnType="Edm.Boolean">
    <Parameter Name="Filter" Type="Edm.String" />
    <DefiningExpression>
        CONTAINS(*, Filter)
    </DefiningExpression>
</Function>
Run Code Online (Sandbox Code Playgroud)

添加创建我的方法存根:

[EdmFunction("MyModelNamespace", "FullTextSearch")]
public static bool FullTextSearch(string filter)
{
    throw new NotSupportedException("This function is only for L2E query.");
}
Run Code Online (Sandbox Code Playgroud)

我试着像这样调用函数:

from product in Products
where MyModel.FullTextSearch("FORMSOF(INFLECTIONAL, robe)")
select product
Run Code Online (Sandbox Code Playgroud)

引发以下异常:

The query syntax is not valid. Near term '*'
Run Code Online (Sandbox Code Playgroud)

我意识到我定义的函数没有直接链接到被查询的实体集,所以这也可能是一个问题.

有什么办法可以解决这个问题吗?

sql-server full-text-search entity-framework entity-framework-4.1

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

Powershell脚本中的MSBuild - 如何知道构建是否成功?

我正在使用Powershell编写构建脚本.这些脚本执行各种操作,例如从SVN获取最新的源代码,备份等,并使用MSBuild构建解决方案:

cmd /c C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe "C:\Dev\Path\MyProjct.sln" /p:Configuration=Release 
Run Code Online (Sandbox Code Playgroud)

在这条指令之后,如果编译成功,我只想执行其余的脚本.我怎么检查这个?

该项目是一个Web项目,因此检查输出并不容易,但我猜一些变量将包含编译结果.此外,因为我用cmd/c调用msbuild,我能够访问这些变量吗?

msbuild powershell

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

如何重用Linq To Sql查询中的where子句

我有用户搜索记录类型的记录.他们在文本框中键入搜索词,然后通过将多个字段与搜索词匹配来搜索记录.

我的查询如下:

var results = from record in DataContext.Records
              where
                   record.Field1.ToLower().Contains(term) ||
                   record.Field2.ToLower().Contains(term) ||
                   record.Field3.ToLower().Contains(term)
              select record;
Run Code Online (Sandbox Code Playgroud)

我有许多查询都使用相同的过滤器,因此我想提取过滤,以便可以重复使用.就像是:

var filter = new Func<Record, string, bool>(
                (record, term) =>
                    record.Field1.ToLower().Contains(term) ||
                    record.Field2.ToLower().Contains(term) ||
                    record.Field3.ToLower().Contains(term)
             );

var results = from record in DataContext.Records
              where filter(record, term)
              select record;
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用,因为:

方法'System.Object DynamicInvoke(System.Object [])'没有支持的SQL转换.

如何跨查询重用where where条件?

.net c# linq-to-sql

14
推荐指数
2
解决办法
6707
查看次数

SmtpException:仅为具有ASCII本地部分的电子邮件地址配置客户端或服务器

当我尝试将电子邮件发送到包含突出字符(é)的地址时,SmtpClient.Send()方法抛出此异常:

System.Net.Mail.SmtpException:仅为具有ASCII本地部分的电子邮件地址配置客户端或服务器:léo.xxx@example.com.
在System.Net.Mail.Mail上的System.Net.Mail.MailAddress.GetAddress(布局allowUnicode)
中的System.Net.Mail.SmtpClient.ValidateUnicodeRequirement(MailMessage ...)(MailMessage ...
)

消息的制定使我可能有一个设置,我可以激活,以使这项工作,虽然我没有找到任何关于这个主题.

我尝试了几种SMTP服务器,包括Gmail.以下是repro的相关位:

码

var msg = new MailMessage();
msg.Subject = "Test";
msg.From = new MailAddress("xxx@gmail.com");
msg.To.Add(new MailAddress("léo.yyy@gmail.com"));

new SmtpClient().Send(msg);
Run Code Online (Sandbox Code Playgroud)

的app.config

<system.net>
    <mailSettings>
        <smtp from="xxx@gmail.com">
            <network host="smtp.gmail.com" port="587" userName="xxx@gmail.com" password="password" enableSsl="true" />
        </smtp>
    </mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

.net c# smtp smtpclient

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

PL/SQL中CASE语句中的堆栈条件

我正在使用Oracle 10g,我试图在CASE语句中"堆叠"条件,就像我在C++中所做的那样:

case 1:
case 2:
    // instructions
    break;
Run Code Online (Sandbox Code Playgroud)

即,为两个不同的成功条件执行相同的代码块.

我试过了 :

WHEN 1, 2 THEN
WHEN 1 OR 2 THEN
Run Code Online (Sandbox Code Playgroud)

......没有运气.它甚至可能吗?

编辑 - 完整片段

CASE v_n
  WHEN (1 OR 2) THEN
    dbms_output.put_line('Case 1 or 2');
  WHEN 3 THEN
    dbms_output.put_line('Case 3'); 
END CASE;
Run Code Online (Sandbox Code Playgroud)

生成表达式错误的类型错误

oracle plsql

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

Web用户控件和验证

我有一个ASP.Net Web用户控件,其中包含一个TextBox和Ajax Control Toolkit中的日历.

当我在我的页面上包含这个用户控件时,我希望它参与输入验证(在UC内的TextBox上设置了一个必需的文件验证器),即.当页面被验证时,UC的内容也应该被验证.所以我让我的UC实现了IValidator接口,除了我无法在用户控件上设置验证组之外,它运行良好.显然我应该继承BaseValidator来做到这一点,但我不能,因为我已经继承了UserControl.

必须有办法处理这种常见情况.

asp.net validation user-controls

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

为什么这两个查询的表现如此不同?

我有一个存储过程,使用全文索引搜索产品(250,000行).

存储过程采用的参数是全文搜索条件.这个参数可以为null,所以我添加了一个空检查,查询突然开始运行速度慢了几个数量级.

-- This is normally a parameter of my stored proc
DECLARE @Filter VARCHAR(100)
SET @Filter = 'FORMSOF(INFLECTIONAL, robe)'

-- #1 - Runs < 1 sec
SELECT TOP 100 ID FROM dbo.Products
WHERE CONTAINS(Name, @Filter)

-- #2 - Runs in 18 secs
SELECT TOP 100 ID FROM dbo.Products
WHERE @Filter IS NULL OR CONTAINS(Name, @Filter)
Run Code Online (Sandbox Code Playgroud)

以下是执行计划:

查询#1 执行工厂#1

查询#2 执行工厂#2

我必须承认我对执行计划不太熟悉.对我来说唯一明显的区别是连接是不同的.我会尝试添加提示,但在我的查询中没有加入我不知道该怎么做.

我也不太明白为什么使用名为IX_SectionID的索引,因为它是一个只包含列SectionID的索引,并且该列不在任何地方使用.

sql-server performance sql-server-2008-r2 sql-execution-plan

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