小编Bri*_*all的帖子

Lambda表达式未返回预期的MemberInfo

我遇到了一个我没想到的问题.一个例子可能比一段更好地说明我的问题:

更新:跳转到最后一个代码块,以获得更有说服力的代码示例.

public class A
{
  public string B { get; set; }
}

public class C : A { }
Run Code Online (Sandbox Code Playgroud)

以下是方法中的一些代码:

var a = typeof(C).GetMember("B")[0];
var b = typeof(A).GetMember("B")[0];

Expression<Func<C, string>> c = x => x.B;

var d = (c.Body as MemberExpression).Member;
Run Code Online (Sandbox Code Playgroud)

以下是一些比较的结果:

a == b //false
a == d //false
b == d //true
Run Code Online (Sandbox Code Playgroud)

前两个有些出乎意料.我知道即使B不是虚拟的,C也可以用w new运算符定义一个具有相同名称的属性,但在这种情况下我没有.

第二个对我来说真是最让人惊讶的(也是我问题的核心).即使lambda的参数明确定义为C类,它仍然返回它,就像从基类访问属性一样.

我正在寻找的是一种从lambda表达式获取MemberInfo的方法,就好像我已经使用参数类型的反射来获取MemberInfo.我的项目本质上将MemberInfos存储在各种字典中,它需要具有可以通过提供lambda表达式来访问元素的功能.

重复的代码示例由Danny Chen提供

public class Base
{
    public string Name { get; set; }
}
public class Derived : Base …
Run Code Online (Sandbox Code Playgroud)

c# lambda

22
推荐指数
3
解决办法
8278
查看次数

使用SystemJS动态地传输SASS

我阅读了许多说SystemJS和SASS转换工作的博客,但我在网上看到的每个例子似乎都预先处理SASS处理(通过类似gulp的任务运行器),然后JavaScript代码导入生成的CSS.

我希望能够做的是让我的JavaScript文件直接导入SASS文件(并让我的SystemJS加载器在运行中转换为CSS).这仅用于开发目的,对于生产,我计划构建一个包含所有内容的静态文件.这可能吗?如果是这样,通常如何做?

附加信息:我也在使用Angular2和Typescript.

谢谢.

sass typescript systemjs angular

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

Typescript是否支持互斥类型?

我有一个带参数的方法.我希望Typescript验证传入的对象(在typescript编译时,我理解运行时是一个不同的动物)只满足一个允许的接口.

例:

interface Person {ethnicity: string;}
interface Pet {breed: string;}
function getOrigin(value: Person ^ Pet){...}

getOrigin({}); //Error
getOrigin({ethnicity: 'abc'}); //OK
getOrigin({breed: 'def'}); //OK
getOrigin({ethnicity: 'abc', breed: 'def'});//Error
Run Code Online (Sandbox Code Playgroud)

我意识到这Person ^ Pet不是有效的Typescript,但这是我认为首先尝试并且看似合理的东西.

typescript

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

适用于非生产环境的 SendGrid

我正在使用 SendGrid 发送电子邮件。其中一些电子邮件会发送给系统的用户。在非生产环境中,我们将配置值发送到备用电子邮件地址而不是实际电子邮件地址。

理想情况下,我想避免这种情况,并让它在产品和非产品中以相同的方式工作。根据研究,SendGrid 有一个沙盒模式,看起来很有前途,但我仍然需要一种方法来实际查看 SendGrid 生成的电子邮件以进行测试。

有谁知道是否有办法查看沙箱电子邮件,或配置 SendGrid 帐户本身来重定向电子邮件?我对产品和非产品使用单独的 SendGrid 帐户,因此如果它是我可以设置的帐户级配置,那就可以了。

sendgrid

6
推荐指数
0
解决办法
1002
查看次数

VSTS中的Selenium屏幕截图(Azure DevOps)

根据我的搜索,它应该“正常工作”。是我发现的最好的文章。我已经按照步骤进行操作,但是在VSTS(Azure DevOps)界面中没有任何地方表明附有任何屏幕截图。

我正在私人托管的构建服务器上运行此程序,并且已经验证了以下内容:

  1. 屏幕截图正在创建并保存到磁盘
  2. 生成的TRX文件(我正在使用MSTEST框架)确实具有ResultFile引用(图像文件的路径)
  3. TRX文件已上传到VSTS,我可以下载它,并看到ResultFile仍在TRX中。

我不确定要使它正常工作缺少什么。任何帮助,将不胜感激。

selenium vstest.console.exe azure-devops

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

需要允许操作方法字符串参数绑定标记

我有一个操作方法,它接受一个字符串作为其唯一参数。操作方法对其进行转换,并将结果返回给客户端(这是通过 ajax 调用完成的)。我需要允许在字符串值中进行标记。过去,我通过使用 装饰模型上的属性来完成此操作[AllowHtml],但该属性不能在参数上使用,并且该类AllowHtmlAttribute是密封的,因此我无法从它继承。我目前有一项工作,我创建了一个仅具有一个属性的模型,并用上述属性对其进行了装饰,并且这是有效的。

我认为我不应该跳过这个圈子。我是否遗漏了什么,或者我应该向 MVC 团队请求允许在方法参数上使用此属性?

asp.net-mvc-3

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

在ARM模板中检索网站部署凭据

我有一个ARM模板,除其他资源外,该模板可创建一个网站,该网站托管webjob和作为调度程序一部分的作业。除了身份验证,我设法通过ARM模板配置了所有配置。

当作业需要运行时,它将创建一个HTTP请求,该请求应该从webjob开始。不幸的是,网络工作从未开始。如果我进入Azure门户并更新作业的设置(“操作”设置)并配置“基本”身份验证(使用部署凭据),一切将按预期方式开始工作,但是我不确定如何从ARM模板中检索这些凭据。 。我可以运行一次,创建网站,获取凭据,然后更新ARM模板,但这完全没有了我首先构建ARM模板的全部原因。

azure azure-rm-template

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