小编Mar*_*ell的帖子

点网装配查看器?

我有一个包含点网组件的dll - 常用的中间语言.问题是它缺少文档,我需要弄清楚api像可用的类,属性和方法,正确的参数传递等.

什么是最好的方法来做到这一点.我需要某种观察者/检查员,但我找不到任何东西.

谢谢.

.net

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

升级到razor 2/mvc 4后,为什么我的剃刀视图抱怨"}预期"?

我有一个现有的剃刀1/mvc 3视图,有一些嵌套if- 非常简单,但在升级到razor 2/mvc 4后,它在运行时抱怨并且编译(BuildViews)} expected.它曾经工作得很好.

  • 我已检查所有元素是否格式良好/已关闭
  • 我已经检查过所有{/ }都是平衡的 - 这不是文件结束问题

有什么不对?

.net asp.net-mvc razor asp.net-mvc-4

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

使用"async"(即使它应该完成)作为MVC路由的一部分,会使路由死锁; 怎么能避免这个?

考虑以下(基于默认的MVC模板),这是在后台发生的一些"东西"的简化版本 - 它完成得很好,并显示预期的结果,20:

public ActionResult Index()
{
    var task = SlowDouble(10);
    string result;
    if (task.Wait(2000))
    {
        result = task.Result.ToString();
    }
    else
    {
        result = "timeout";
    }

    ViewBag.Message = result;
    return View();
}
internal static Task<long> SlowDouble(long val)
{
    TaskCompletionSource<long> result = new TaskCompletionSource<long>();
    ThreadPool.QueueUserWorkItem(delegate
    {
        Thread.Sleep(50);
        result.SetResult(val * 2);
    });
    return result.Task;
}
Run Code Online (Sandbox Code Playgroud)

但是,现在如果我们async在混合中添加一些:

public static async Task<long> IndirectSlowDouble(long val)
{
    long result = await SlowDouble(val);

    return result;
}
Run Code Online (Sandbox Code Playgroud)

并将路线中的第一行更改为:

var task = IndirectSlowDouble(10);
Run Code Online (Sandbox Code Playgroud)

然后它不起作用 ; 它反而超时了.如果我们添加断点,方法 …

.net asp.net asp.net-mvc asynchronous task-parallel-library

19
推荐指数
3
解决办法
1815
查看次数

C#:将对象添加到队列时触发事件

我需要能够在将对象添加到a时触发事件Queue<Delegate>.

我创建了一个扩展的新类Queue:

public delegate void ChangedEventHandler(object sender, EventArgs e);

public class QueueWithChange<Delegate> : Queue<Delegate>
{
    public event ChangedEventHandler Changed;

    protected virtual void OnChanged(EventArgs e) {
        if (Changed != null)
        {
            Changed(this, e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从另一个类附加事件,如:

QueueWithChange<TimerDelegate> eventQueue = new QueueWithChange<TimerDelegate>();

//

eventQueue.Changed += new ChangedEventHandler(delegate(object s, EventArgs ex) {
    //This event is not being triggered, so this code is unreachable atm...and that is my problem

    if (eventQueue.Count > 0)
    {
        eventQueue.Dequeue().Invoke(new DispatcherTimer() { Interval = …
Run Code Online (Sandbox Code Playgroud)

c# queue events delegates

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

如何在两个JVM实例之间共享内存?

我在JVM(Scala)中构建了一个巨大的图形,我想重复使用它,调整算法.我不想每次都从磁盘重装它.有没有办法让它在一个JVM中连接而从另一个JVM连接,算法正在开发中?

java jvm scala

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

如何在不同(但兼容)的模型之间转换lambda表达式?

(基于电子邮件对话,现在记录用于信息共享)我在不同的层使用了两个模型:

public class TestDTO {
    public int CustomerID { get; set; }
}
//...
public class Test {
    public int CustomerID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和我的DTO层的lambda:

Expression<Func<TestDTO, bool>> fc1 =
   (TestDTO c1) => c1.CustomerID <= 100 && c1.CustomerID >= 10;
Run Code Online (Sandbox Code Playgroud)

如何将lambda(在一般情况下)转换为讨论其他模型:

Expression<Func<Test, bool>> fc2 = {insert magic here, based on fc1}
Run Code Online (Sandbox Code Playgroud)

(显然,我们是在相同的测试条件下,但使用的Test类型)

.net c# linq expression

18
推荐指数
2
解决办法
3063
查看次数

如何将代码拆分为组件......大类?小班?

这是非常基本的东西,但是这里有.我发现我无法同意自己,将大型课程分成小型课程的方式是否使得课程更易于维护或更难以维护.我熟悉设计模式,虽然不是很详细,但也熟悉面向对象设计的概念.抛开所有花哨的规则和指导方针,我希望通过一个非常简单的示例场景来挑选我所缺少的内容.基本上是这样的:"......这种设计会让它变得更加困难"......等等......由于缺乏经验,所以我没有预料到的所有事情.

假设您需要编写基本的"文件读取器/文件编写器"样式类来处理某种类型的文件.我们将该文件称为YadaKungFoo文件.YadaKungFoo文件的内容基本上类似于INI文件,但有细微差别.

有部分和价值观:

[Sections]
Kung,Foo
Panda, Kongo

[AnotherSection]
Yada,Yada,Yada
Subtle,Difference,Here,Yes

[Dependencies]
PreProcess,SomeStuffToPreDo
PreProcess,MoreStuff
PostProcess,AfterEight
PostProcess,TheEndIsNear
PostProcess,TheEnd
Run Code Online (Sandbox Code Playgroud)

好的,所以这可以产生3个基本类:

public class YadaKungFooFile
public class YadaKungFooFileSection
public class YadaKungFooFileSectionValue
Run Code Online (Sandbox Code Playgroud)

后两个类本质上只是具有ToString()重写的数据结构,以吐出使用几个通用列表存储的值的字符串列表.这足以实现YadaKungFooFile保存功能.

所以随着时间的推移,YadaYadaFile开始增长.几种重载以不同的格式保存,包括XML等,文件开始推向800行左右.现在真正的问题是:我们想要添加一个功能来验证YadaKungFoo文件的内容.想到的第一件事显然是添加:

var yada = new YadaKungFooFile("C:\Path");
var res = yada .Validate()
Run Code Online (Sandbox Code Playgroud)

我们已经完成了(我们甚至可以从构造函数中调用该方法).麻烦的是验证非常复杂,并且使得类非常大,所以我们决定创建一个这样的新类:

var yada = new YadaKungFooFile("C:\Path"); 
var validator = new YadaKungFooFileValidator(yada); 
var result = validator.Validate();
Run Code Online (Sandbox Code Playgroud)

现在这个样本显然非常简单,琐碎且微不足道.上述两种方式中的任何一种都可能不会产生太大的差异,但我不喜欢的是:

  1. YadaKungFooFileValidator类和YadaKungFooFile类似乎非常强烈地受到这种设计加上.这似乎是一个类的变化,可能会引发另一个类的变化.
  2. 我知道诸如"Validator","Controller","Manager"等短语表示一个关注其他对象状态而不是"自己的业务"的类,因此违反了关注原则的分离和消息发送.

总而言之,我想我觉得我没有经验可以理解设计为什么不好的所有方面,在什么情况下它并不重要,哪些关注更重要:更小的类或更具凝聚力的类.他们似乎是矛盾的要求,但也许我错了.也许验证器类应该是一个复合对象?

基本上我要求就上述设计可能带来的好处/问题提出意见.有什么不同的做法?(基础FileValidator类,FileValidator接口等等.你的名字).想想YadaKungFooFile功能随着时间的推移不断增长.

.net c#

17
推荐指数
3
解决办法
5990
查看次数

HttpWebRequest有没有close方法?

我很惊讶地看到HttpWebRequest没有紧密的方法,但它的反对部分HttpWebResponse有.这让我有点困惑和不方便.:-)

那么,我们只需要在响应时调用Close,而不需要处理请求?我担心的是泄漏和更好的资源使用效率.我使用的是VSTS2008 + C#+ .Net 3.5.

.net c# .net-3.5

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

基于接口的方法是否应该调用使用"动态"仍遵循C#方法解析规则?

据我了解,每种语言都可以拥有自己的dynamic处理程序,因此适用相应的规则.我不确定以下是否正确/不正确; 想法?

场景:使用一些方法的两个接口(一个实现另一个):

public interface IA {
    void Bar(object o);
}
public interface IB : IA {
    void Foo(object o);
}
Run Code Online (Sandbox Code Playgroud)

和一个基本的实现:

public class B : IB {
    public void Foo(object o) { Console.WriteLine("Foo"); }
    public void Bar(object o) { Console.WriteLine("Bar"); }
}
Run Code Online (Sandbox Code Playgroud)

现在,使用正常的C#(no dynamic),我们可以IA从类型的目标访问方法IB:

IB b = new B();
var o = new { y = "z" };
b.Foo(o.y); // fine
b.Bar(o.y); // fine
Run Code Online (Sandbox Code Playgroud)

现在让我们故意dynamic在参数中添加一些,这使得整个调用都使用dynamic处理(在一般情况下,这可能会影响重载解析,尽管它不会在这里):

IB …
Run Code Online (Sandbox Code Playgroud)

c# dynamic

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

即使路径中存在百分比编码的部分,我如何可靠地获取实际的URL?

IIS和ASP.NET(MVC)在使用路径中带有%-encoding的URL时(而不是查询字符串;查询字符串很好)有一些小故障.我怎么能绕过这个?即如何获取所请求的实际URL?

例如,如果我导航到/x%3Fa%3Db(并单独)/x?a=b- 它们都报告.Request.Url/x?a=b- 因为路径中的编码数据报告不正确.

c# asp.net iis asp.net-mvc

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