我正在查看Type的元数据,并注意到一个成员受到保护,这让我想知道它可能从中得到什么,这让我意识到我可以编写一个源自它的类,这一切让我想知道我能做些什么与此(如果有的话).
以下没有编译器错误:
class MyType : Type
{
// Implemented abstract members here.
}
Run Code Online (Sandbox Code Playgroud) 在.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)
哪个更合适,为什么?
什么时候一个或另一个失败?
在阅读了越来越多关于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 ......
提前致谢.
如果我有:
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) 我刚刚在VS2015(专业版)中安装了Update 2.现在,当我停止项目时,IISExpress会自动停止.在更新之前没有发生这种情况.还有其他人经历过这个吗?更重要的是,有没有比使用Browse With更好的解决方案?
此外,我已经永远禁用了编辑和继续; 那不是问题.
我有一个应用程序做了很多绘图,让我们假装它是一个类似Viso的应用程序.它有一些对象,它们有多个绘制的子对象,可以连接的东西,调整大小等等.目前,当我在特定的子对象或对象上调用paint时,我会执行以下操作:
using(var pen = new Pen(this.ForeColor))
{
// Paint for this object.
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了相互矛盾的答案,这应该针对一个不断绘制相同内容的应用程序(可能只是重新调整大小,移动等)来完成.我应该Pen/Brush将对象存储在对象中,然后在处理应用程序时将它们全部丢弃,或者它们是否足够高效以便为每次绘制调用创建/处理(记住这是一个非常图形密集的应用程序).
编辑:已经有两个答案有相互矛盾的答案,这是我不确定要切换的地方.有没有人对这些差异有任何统计数据?
我正在开发一个应用程序,它使用Raphael绘制原始形状(矩形,椭圆,三角形等)和线条,但也允许用户移动/调整这些对象的大小.其中一个主要要求是形状的面可以有格式化的文本.实际文本是Markdown的一个子集(简单的事情,如粗体,斜体,列表),并呈现为HTML.
FWIW - 我正在使用Backbone.js视图来模块化形状逻辑.
我最初的想法是使用foreignObjectSVG和直接HTML与VML for IE的组合.但是,IE9不支持foreignObject,因此必须放弃这种方法.
使用canvas对象旁边,添加div包含实际HTML的s.然后,将它们放在具有透明背景的实际形状上.我创建了一个形状视图,它引用了拉斐尔的实际形状和"叠加" div.这种方法存在一些问题:
使用不是SVG/VML容器子代的叠加感觉不对.这个叠加元素会导致其他问题吗?
通常被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 …我有一个简单的模型:
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 …
我有一个简单的表单,将图像上传到数据库.使用控制器操作,然后可以回送图像(我已经硬编码为此代码使用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#应用程序.应用程序每秒计算内存/ 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上.
c# ×7
.net ×4
asp.net-mvc ×2
gdi+ ×1
iis-express ×1
inheritance ×1
javascript ×1
mysql ×1
performance ×1
raphael ×1
reflection ×1
sql ×1
sql-order-by ×1
types ×1
winforms ×1