小编The*_*Sky的帖子

为什么班级类型没有密封,我该怎么办呢?

我正在查看Type的元数据,并注意到一个成员受到保护,这让我想知道它可能从中得到什么,这让我意识到我可以编写一个源自它的类,这一切让我想知道我能做些什么与此(如果有的话).

以下没有编译器错误:

class MyType : Type
{
    // Implemented abstract members here.
}
Run Code Online (Sandbox Code Playgroud)

c# inheritance types

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

IsAssignableFrom和GetInterface有什么区别?

在.Net中使用反射,有什么区别:

   if (foo.IsAssignableFrom(typeof(IBar)))
Run Code Online (Sandbox Code Playgroud)

和

   if (foo.GetInterface(typeof(IBar).FullName) != null)
Run Code Online (Sandbox Code Playgroud)

哪个更合适,为什么?

什么时候一个或另一个失败?

.net c# reflection

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

删除IoC容器的依赖关系

在阅读了越来越多关于IoC容器的内容后,我读到了这篇文章,关于代码中没有IoC.Resolve()等.

我真的很想知道,我怎么能删除对容器的依赖?

我想写下面的代码:

public void Action()
{
    using(IDataContext dc = IoC.Resolve<IDataContext>())
    {
        IUserRepository repo = IoC.Resolve<IUserRepository>();
        // Do stuff with repo...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我如何摆脱IoC.Resolve调用呢?也许我需要更好地理解DI ......

提前致谢.

c# dependency-injection ioc-container inversion-of-control

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

明确指定mysql查询的排序顺序?

如果我有:

ID | Title
1  | Shirt
2  | CD
3  | Cap
4  | Mp3
5  | Badge
Run Code Online (Sandbox Code Playgroud)

如果我想按此顺序排序:4,2,5,3,1.有没有办法在您明确指定的情况下进行SQL查询?就像是:

select * from TABLE order by ID(4,2,5,3,1) ??
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-order-by

17
推荐指数
2
解决办法
7143
查看次数

VS2015更新2 - 停止编辑并继续禁用IISExpress

我刚刚在VS2015(专业版)中安装了Update 2.现在,当我停止项目时,IISExpress会自动停止.在更新之前没有发生这种情况.还有其他人经历过这个吗?更重要的是,有没有比使用Browse With更好的解决方案?

此外,我已经永远禁用了编辑和继续; 那不是问题.

visual-studio iis-express visual-studio-2015

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

我应该为每个Paint请求创建新的Pens/Brushes还是在整个应用程序生命周期中保留它们?

我有一个应用程序做了很多绘图,让我们假装它是一个类似Viso的应用程序.它有一些对象,它们有多个绘制的子对象,可以连接的东西,调整大小等等.目前,当我在特定的子对象或对象上调用paint时,我会执行以下操作:

using(var pen = new Pen(this.ForeColor))
{
    // Paint for this object.
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了相互矛盾的答案,这应该针对一个不断绘制相同内容的应用程序(可能只是重新调整大小,移动等)来完成.我应该Pen/Brush将对象存储在对象中,然后在处理应用程序时将它们全部丢弃,或者它们是否足够高效以便为每次绘制调用创建/处理(记住这是一个非常图形密集的应用程序).

编辑:已经有两个答案有相互矛盾的答案,这是我不确定要切换的地方.有没有人对这些差异有任何统计数据?

.net c# gdi+ winforms

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

在*Raphael(SVG/VML)形状内呈现HTML*的想法

我正在开发一个应用程序,它使用Raphael绘制原始形状(矩形,椭圆,三角形等)和线条,但也允许用户移动/调整这些对象的大小.其中一个主要要求是形状的面可以有格式化的文本.实际文本是Markdown的一个子集(简单的事情,如粗体,斜体,列表),并呈现为HTML.

FWIW - 我正在使用Backbone.js视图来模块化形状逻辑.

方法1

我最初的想法是使用foreignObjectSVG和直接HTML与VML for IE的组合.但是,IE9不支持foreignObject,因此必须放弃这种方法.

方法2

使用canvas对象旁边,添加div包含实际HTML的s.然后,将它们放在具有透明背景的实际形状上.我创建了一个形状视图,它引用了拉斐尔的实际形状和"叠加" div.这种方法存在一些问题:

  1. 使用不是SVG/VML容器子代的叠加感觉不对.这个叠加元素会导致其他问题吗?

  2. 通常被Raphael困住的事件(拖动,点击等)需要从叠加层转发到Raphael对象.对于支持的浏览器pointer-events,这很容易做到:

    div.shape-text-overlay {
      position: absolute;
      background: none;
      pointer-events: none;
    }
    

    但是,其他浏览器(如IE8及以下版本)需要转发事件:

    var forwardedEvents = 'mousemove mousedown mouseup click dblclick mouseover mouseout';
    this.$elText.on(forwardedEvents, function(e) {
    
      var original = e.originalEvent;
    
      var event;
      if (document.createEvent) {
        event = document.createEvent('HTMLEvents');
        event.initEvent(e.type, true, true);
      } 
      else {
        event = document.createEventObject();
        event.eventType = e.type;
      }
    
      // FYI - This …

javascript raphael

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

如何禁用ModelMetadata.IsRequired始终为非可空值类型的true

我有一个简单的模型:

public class Sample
{
    public bool A { get; set; }

    [Required]
    public bool B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

显然不需要A. 因此,已经DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false在Global.asax中设置了验证.

我还有一个简单的html帮助器,如果需要模型,则打印true或false:

public static class HtmlHelperExtensions
{
    public static MvcHtmlString IsRequired<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
    {
        var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);        
        return new MvcHtmlString(metadata.IsRequired.ToString());
    }
} 
Run Code Online (Sandbox Code Playgroud)

我还写了一个视图来展示我的问题:

@model MvcApplication10.Models.Sample

A: @Html.IsRequired(m => m.A), B: @Html.IsRequired(m => m.B)
Run Code Online (Sandbox Code Playgroud)

我本以为要打印A: false, B: true,但实际打印A: true, B: true.

有没有办法让这个打印成为我预期的结果?IsRequired似乎总是返回true,即使我没有明确设置RequiredAttribute …

.net c# asp.net-mvc asp.net-mvc-3

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

从动作返回图像会导致FireBug/Chrome Dev出错.工具

我有一个简单的表单,将图像上传到数据库.使用控制器操作,然后可以回送图像(我已经硬编码为此代码使用jpegs):

public class ImagesController : Controller
{
    [HttpPost]
    public ActionResult Create(HttpPostedFileBase image)
    {
        var message = new MessageItem();
        message.ImageData = new byte[image.ContentLength];
        image.InputStream.Read(message.ImageData, 0, image.ContentLength);
        this.session.Save(message);
        return this.RedirectToAction("index");
    }

    [HttpGet]
    public FileResult View(int id)
    {
        var message = this.session.Get<MessageItem>(id);
        return this.File(message.ImageData, "image/jpeg");
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用,直接浏览图像(例如/images/view/1)正确显示图像.但是,我注意到当FireBug打开时,我遇到了一个可爱的错误:

图像损坏或截断:data:image/jpeg; base64,/ f39 ...(后跟图像的base64表示).

此外,在Chrome开发者工具中:

资源解释为Document但使用MIME类型image/jpeg进行传输.

我检查了要返回的标头.以下是发送回浏览器的标头示例.没有什么看起来不寻常(可能是Cache-Control?):

Cache-Control       private, s-maxage=0
Content-Type        image/jpeg
Server              Microsoft-IIS/7.5
X-AspNetMvc-Version 3.0
X-AspNet-Version    4.0.30319
X-SourceFiles       =?UTF-8?B?(Trimmed...)
X-Powered-By        ASP.NET
Date                Wed, 25 May 2011 23:48:22 GMT …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-mvc-3

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

为什么我的应用程序随着时间的推

我正在调试一个几天后几乎没有响应的C#应用​​程序.应用程序每秒计算内存/ CPU使用率,并将其显示在主UI的页脚中.

无响应的原因是因为获取RawValuea PerformanceCounter("工作集 - 私有")所花费的时间.几天之后,需要几乎一秒的时间来获取RawValue,冻结主UI线程.如果我重新启动计算机,一切都会再次快速运行几天,直到它慢慢变得不那么敏感.如果我在没有PerformanceCounter代码(它的开源)的情况下重新编译这个应用程序,它会立即正常运行.

要排除它是应用程序,这里有一些示例代码完全相同:

static void Main(string[] args)
{
    using (var memoryWorkingSetCounter = new PerformanceCounter("Process", "Working Set - Private", Process.GetCurrentProcess().ProcessName, true))
    {
        while (!Console.KeyAvailable)
        {
            var memoryWorkingSetSw = new Stopwatch();
            memoryWorkingSetSw.Start();
            var memoryWorkingSetValue = memoryWorkingSetCounter.RawValue;
            memoryWorkingSetSw.Stop();
            Console.WriteLine(memoryWorkingSetValue.ToString());
            Console.WriteLine(memoryWorkingSetSw.Elapsed.ToString());
            Thread.Sleep(TimeSpan.FromSeconds(1));
        }
    }
    Console.Read();
}
Run Code Online (Sandbox Code Playgroud)

我让它运行了大约2.5天,并Elapsed以毫秒为单位绘制了时间:

图形

什么可能导致Windows中的性能计数器随着时间的推移变得缓慢?另一个应用程序可能不清理它?有没有办法调试哪些应用程序也在查看此性能计数器?我在Windows 10上.

.net c# performance performancecounter

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