编辑
简单的问题是,如何Thread.CurrentPrincipal.Identity.Name在WPF中获得当前用户登录?
结束编辑
我正在尝试调用现有方法(不是任何类型的服务;只是POCO中的方法),它使用以下方法检索当前用户:
Thread.CurrentPrincipal.Identity.Name
这段代码是由其他人编写的,并且(可能)与他的ASP.NET MVC项目一起工作.我试图从WPF调用相同的方法,而Name现在是空白的.
我能做些什么吗?
假设您使用AutoMapper进行映射的对象不需要自定义映射,那么执行此操作是否有意义:
Mapper.CreateMap<Src, Dest>();
// ....
Mapper.Map(SrcObject, DestObj);
Run Code Online (Sandbox Code Playgroud)
如果不需要自定义映射,上述方法是否只需使用DynamicMap就可以获得任何东西,而无需任何先前的配置?
Mapper.DynamicMap(SrcObject, DestObj);
Run Code Online (Sandbox Code Playgroud)
我也明白,DynamicMap在需要的时候你映射匿名类型,但我想咨询一下是否DyanmicMap是以往任何时候都不能优先用于需要没有自定义映射静态类型.
这是linq-to-sql
我有很多不同的类都在做相同的查询,但投影结果略有不同.理想情况下,我希望能够在一个地方进行查询,并将投影传递给Select方法.它适用于具体类型:
public void GetResults() {
var junk = db.SiteProducts.Select(Project());
}
public Expression<Func<DbEntities.SiteProduct, string>> Project() {
return p => p.ProductAlert;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试返回匿名类型时,它会失败
public void GetResults() {
var junk = db.SiteProducts.Select(Project());
}
public Expression<Func<DbEntities.SiteProduct, TResult>> Project<TResult>() {
return p => new { p.ProductAlert };
}
Run Code Online (Sandbox Code Playgroud)
我完全理解为什么泛型类型推断在第二种情况下失败了.但是有没有从头开始制作我自己的表达式的技巧 - 我错过了可以让这个工作?
关于究竟lazy ="extra"能够做什么,有没有一个很好的解释?
我看到的所有帖子都只是重复这样一个事实:它将引用转换MyObject.ItsCollection.Count为select count(*)查询(假设它们尚未加载).
我想知道它是否能够提供更强大的功能,比如MyObject.ItsCollection.Any(o => o.Whatever == 5)变成SELECT ...EXISTS查询.
文档的第18.1节仅涉及它.我不是NH开发人员,因此我无法真正尝试它并观看SQL事件探查器而不需要做一些工作来设置所有内容; 我只是在寻找某种参考来描述这个功能的功能.
谢谢!
为什么不能将int那个被装箱的东西直接投入double?
object o = 12;
double d = (double)o;
Run Code Online (Sandbox Code Playgroud)
抛出无效的强制转换异常.相反,它似乎必须首先被投射为int,然后再投射double.
object o = 12;
double d = (double)(int)o;
Run Code Online (Sandbox Code Playgroud)
我确信这个简单的答案是"因为这就是拳击的工作原理"但我希望有人可能会在这里说清楚.
我正在尝试将属性赋值作为表达式树传递给方法.该方法将调用表达式以便正确分配属性,然后嗅出刚刚分配的属性名称,以便我可以引发PropertyChanged事件.我的想法是,我希望能够在我的WPF ViewModel中使用超薄自动属性,并且仍然会触发PropertyChanged事件.
我是ExpressionTrees的无知者,所以我希望有人能指出我正确的方向:
public class ViewModelBase {
public event Action<string> PropertyChanged = delegate { };
public int Value { get; set; }
public void RunAndRaise(MemberAssignment Exp) {
Expression.Invoke(Exp.Expression);
PropertyChanged(Exp.Member.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道怎么称呼它.编译器拒绝了这种天真的尝试,原因是我肯定对任何能够回答这个问题的人都很明显:
ViewModelBase vm = new ViewModelBase();
vm.RunAndRaise(() => vm.Value = 1);
Run Code Online (Sandbox Code Playgroud)
编辑
谢谢@svick的完美答案.我移动了一个小东西,并把它变成了一个扩展方法.以下是单元测试的完整代码示例:
[TestClass]
public class UnitTest1 {
[TestMethod]
public void TestMethod1() {
MyViewModel vm = new MyViewModel();
bool ValuePropertyRaised = false;
vm.PropertyChanged += (s, e) => ValuePropertyRaised = e.PropertyName == "Value";
vm.SetValue(v => v.Value, 1);
Assert.AreEqual(1, vm.Value);
Assert.IsTrue(ValuePropertyRaised); …Run Code Online (Sandbox Code Playgroud) 我试图运行一个selenium脚本,点击我的工具栏中的一个firefox插件.是否有可能做到这一点?
以下在graphiQL中正确执行
fragment BookGridFields on Book {
_id
title
}
{
allBooks {
...BookGridFields
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,可以在我的架构中指定片段,就在我的Book类型定义的下面,就像这样
type Book {
_id: String
title: String
pages: Int
weight: Float
authors: [Author]
}
fragment BookGridFields on Book {
_id
title
}
Run Code Online (Sandbox Code Playgroud)
所以我可以像这样运行查询
{
allBooks {
...BookGridFields
}
}
Run Code Online (Sandbox Code Playgroud)
无需将片段定义为我的查询的一部分.
目前上述错误有
未知片段\"BookGridFields \"
在Javascript中,这两种向对象添加函数的方法有什么区别吗?出于任何原因,一个人更好吗?
function ObjA() {
this.AlertA = function() { alert("A"); };
}
ObjA.prototype.AlertB = function() { alert("B"); };
var A = new ObjA();
A.AlertA();
A.AlertB();
Run Code Online (Sandbox Code Playgroud) 什么是获得所有以任何类开头的div的最佳方法input?换句话说,a并且b应该从什么下方,但不退还c.
<div id="a" class="input1 foo"></div>
<div id="b" class="foo input2"></div>
<div id="c" class="xinput3 foo"></div>
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,在这里接受的表面方式是做$("div[class^='input']");但当然是错过了b.当然$("div[class*='input']");会给出误报c.
我能想到的最好的就是这种怪异
function getAllInputDivs() {
return $("div").filter(function (i, currentDiv) {
return $.grep($(currentDiv).attr("class").split(" "), function (val) {
return val.substr(0, "input".length) === "input";
}).length > 0;
});
}
Run Code Online (Sandbox Code Playgroud)
有更干净的方式吗?这是上面的工作小提琴
c# ×5
javascript ×3
automapper ×1
casting ×1
devforce ×1
graphql ×1
graphql-js ×1
java ×1
jquery ×1
linq ×1
linq-to-sql ×1
nhibernate ×1
webdriver ×1
wpf ×1