反思是否打破了私人方法的想法?因为可以从类外部访问私有方法吗?(也许我不理解反思的意思或错过别的东西,请告诉我) http://en.wikipedia.org/wiki/Reflection_%28computer_science%29
编辑: 如果relection打破了私有方法的想法 - 我们是否只将私有方法用于程序逻辑而不用于程序安全?
谢谢
我试图找出是否已经在其中一个标准命名空间中定义了黄金比例的值,但我无法在文档或其他在线资源中找到任何内容.
那么我可能错过的标准命名空间中已经定义的黄金比率是否有价值?
在Math有Math.Pi和Math.E,但没有Math.Phi?
加载HTML页面时,以下标记对我的浏览器会起什么作用?
<meta http-equiv="X-UA-Compatible" content="IE=edge">
Run Code Online (Sandbox Code Playgroud) 我有一个使用'主/从复制'的数据库设置.我有一个主人和(至少)一个奴隶,可能是ℕ奴隶.为简单起见,我将讨论一个主设备,一个从设备,因为确定使用哪个从设备包括一些与手头实际问题无关的业务逻辑.
这是设置的示意图(带有ℕ奴隶):
在应用程序(目前使用Dapper)中,我有以下简化的代码:
abstract class BaseRepo
{
private readonly string _readconn;
private readonly string _writeconn;
public BaseRepo(string readConnection, string writeConnection)
{
_readconn = readConnection; //Actually IEnumerable<string> for ? slaves
_writeconn = writeConnection;
}
private SqlConnection GetOpenConnection(string cnstring)
{
var c = new SqlConnection(cnstring);
c.Open();
return c;
}
public SqlConnection GetOpenReadConnection()
{
return this.GetOpenConnection(_readconn);
// Actually we use some business-logic to determine *which* of the slaves to use
}
public SqlConnection GetOpenWriteConnection()
{
return this.GetOpenConnection(_writeconn); …Run Code Online (Sandbox Code Playgroud) 我有一个大文件,其本质上包含如下数据:
Netherlands,Noord-holland,Amsterdam,FooStreet,1,...,...
Netherlands,Noord-holland,Amsterdam,FooStreet,2,...,...
Netherlands,Noord-holland,Amsterdam,FooStreet,3,...,...
Netherlands,Noord-holland,Amsterdam,FooStreet,4,...,...
Netherlands,Noord-holland,Amsterdam,FooStreet,5,...,...
Netherlands,Noord-holland,Amsterdam,BarRoad,1,...,...
Netherlands,Noord-holland,Amsterdam,BarRoad,2,...,...
Netherlands,Noord-holland,Amsterdam,BarRoad,3,...,...
Netherlands,Noord-holland,Amsterdam,BarRoad,4,...,...
Netherlands,Noord-holland,Amstelveen,BazDrive,1,...,...
Netherlands,Noord-holland,Amstelveen,BazDrive,2,...,...
Netherlands,Noord-holland,Amstelveen,BazDrive,3,...,...
Netherlands,Zuid-holland,Rotterdam,LoremAve,1,...,...
Netherlands,Zuid-holland,Rotterdam,LoremAve,2,...,...
Netherlands,Zuid-holland,Rotterdam,LoremAve,3,...,...
...
Run Code Online (Sandbox Code Playgroud)
这是一个数千兆字节的文件.我有一个类读取此文件并将这些行(记录)公开为IEnumerable<MyObject>.这MyObject有几个属性(Country,Province,City,...)等.
如您所见,存在大量重复数据.我想继续公开底层数据IEnumerable<MyObject>.但是,其他一些类可能(并且可能会)对这些数据进行一些分层视图/结构,如:
Netherlands
Noord-holland
Amsterdam
FooStreet [1, 2, 3, 4, 5]
BarRoad [1, 2, 3, 4]
...
Amstelveen
BazDrive [1, 2, 3]
...
...
Zuid-holland
Rotterdam
LoremAve [1, 2, 3]
...
...
...
...
Run Code Online (Sandbox Code Playgroud)
在阅读这个文件时,我基本上就是这样做的:
foreach (line in myfile) {
fields = line.split(",");
yield return new MyObject {
Country = fields[0], …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<MyConfig>(Configuration.GetSection("MySection"));
services.AddSingleton<IMyClass>(sp => new MyClass(sp.GetService<IOptions<MyConfig>>()));
}
Run Code Online (Sandbox Code Playgroud)
这注册了一个单例MyClass,现在我可以让我的控制器采用类型为 的构造函数参数IMyClass。这按预期工作。
MyClass仅当控制器需要 时,才会首先实例化IMyClass。但是,我希望在任何人要求它之前MyClass就被实例化(因为它在它的构造函数中做了一些工作,需要一些时间)。
我可以做类似的事情:
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<MyConfig>(configuration.GetSection("MySection"));
var myinstance = new MyClass(/*...*/); // How do I get MyConfig in here?
services.AddSingleton<IMyClass>(myinstance);
}
Run Code Online (Sandbox Code Playgroud)
...但是我无法访问配置,因为我没有对IServiceProvider(sp第一个代码示例中的变量)的引用。我如何到达服务提供者或者我必须做什么才能确保实例尽快初始化?
我在div元素上有一个滚动条.
在许多浏览器上(我在MacOS和Linux上的Chrome和Firefox的最新版本上进行了测试),似乎浏览器确保在滚动重绘触发之前调用绑定到onscroll的代码.
换句话说,当滚动http://jsfiddle.net/m2E65/1/时,以下小提琴不闪烁也不闪烁:
var onscroll = function() {
var y = $("#container").scrollTop() + 30;
var z = 0
for (var c=0; c<y*10000; c++) {
z+=c;
}
$("#label").text("bocal : "+z);
$("#label").css("top", y);
};
$('#container').scroll(onscroll);
Run Code Online (Sandbox Code Playgroud)
但是在Ubuntu上的Linux Chromium v28上,它会闪烁.几乎和我们使用setTimeout(http://jsfiddle.net/m2E65/2/)延迟onscroll一样糟糕:
$('#container').scroll(function() {
window.setTimeout(onscroll, 0);
});
Run Code Online (Sandbox Code Playgroud)
在这个相同的浏览器上,甚至使用http://jsfiddle.net/m2E65/4/中的 requestAnimationFrame也一样闪烁(见下文)
var onscroll = function() {
var y = $("#container").scrollTop() + 30;
var z = 0
for (var c=0; c<y*10000; c++) {
z+=c;
}
$("#label").text("bocal : "+z);
$("#label").css("top", y);
window.requestAnimationFrame(onscroll);
};
window.requestAnimationFrame(onscroll);
Run Code Online (Sandbox Code Playgroud)
我的问题是: …
说我有这个表达式:
int setsize = 20;
Expression<Func<Foo, bool>> predicate = x => x.Seed % setsize == 1
|| x.Seed % setsize == 4;
Run Code Online (Sandbox Code Playgroud)
这基本上将一组元素"划分"为20个分区,并从每个集合中检索每个第一和第四个元素.
此表达式传递给MongoDB,它的驱动程序完全能够转换为MongoDB"查询".但是,谓词也可以用在对象列表(LINQ2Objects)等上.我希望这个表达式可以重用(DRY).但是,我希望能够传入一个IEnumerable<int>来指定要检索的项目(因此1和4不是"硬编码"到其中):
public Expression<Func<Foo, bool>> GetPredicate(IEnumerable<int> items) {
//Build expression here and return it
}
Run Code Online (Sandbox Code Playgroud)
使用LINQPad使用此代码:
int setsize = 20;
Expression<Func<Foo, bool>> predicate = x => x.Seed % setsize == 1 || x.Seed % setsize == 4;
predicate.Dump();
}
class Foo
{
public int Seed { get; set; …Run Code Online (Sandbox Code Playgroud) 说我有一个像这样的控制器:
public class MyController : ApiController {
[Route("{myarg}")]
[HttpGet]
public async Task<Foo> Get(string myarg)
{
return await ...
}
}
Run Code Online (Sandbox Code Playgroud)
该myarg参数必须是"规范化".假设我总是希望修剪它,将其大写并将其反转.实际操作并不重要,它们只是一个例子,所以我不是在寻找修剪或反转字符串的方法.
我有一堆控制器,包含所有类似参数的所有方法.我希望有一种方法来注释这些方法或做其他事情以确保参数在传递到方法之前始终是"规范化的".我已经研究了路由约束(特别是自定义路由约束),但这并没有提供一种方法来做我想要的事情(这是有道理的,因为它不是一个真正的约束).
理想情况下,我想用以下属性来注释方法:
[MyNormalize("{myarg}")]
Run Code Online (Sandbox Code Playgroud)
或类似RouteAttributes 的类似东西.什么是最好的方式来实现这个并以干净的方式实现这一点?
我只是浪费了很多时间来尝试定制ComplexTypeModelBinder工作.无论我做了什么,它都没有奏效.事实证明,这仅在数据作为表单数据发布时有效; 当你发布一个JSON对象(在我的情况下从Swagger"试用"表单)时,ComplexTypeModelBinder永远不会调用该SetProperty方法.
我有很多模型,有些比其他更复杂,我用自定义属性注释了一些属性.每当该属性被绑定时,我希望它" 标准化 "(对它应用一些"格式化"),以便在模型得到验证时,验证器可以看到"标准化"数据而不是用户输入的数据.
我真的,真的,想要保持当前的模型绑定行为,因为它目前工作正常但有一个例外,即注释属性由我实现的一些代码处理.所有其他属性和行为应保持原样.这就是我希望继承的原因ComplexTypeModelBinder,但是,事实证明,如果数据以JSON的形式发布,则这不起作用.
我的(示例)模型看起来像:
public class MyComplexModel
{
public int Id { get; set; }
public string Name { get; set; }
[FormatNumber(NumberFormat.E164)]
public string PhoneNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的控制器方法如下所示:
[HttpPost]
public MyComplexModel Post(MyComplexModel model)
{
return model;
}
Run Code Online (Sandbox Code Playgroud)
我的(不工作)自定义ComplexTypeModelBinder看起来像:
public class MyModelBinder : ComplexTypeModelBinder
{
private readonly INumberFormatter _numberformatter;
private static readonly ConcurrentDictionary<Type, Dictionary<string, FormatNumberAttribute>> _formatproperties = new ConcurrentDictionary<Type, Dictionary<string, FormatNumberAttribute>>();
public MyModelBinder(IDictionary<ModelMetadata, IModelBinder> …Run Code Online (Sandbox Code Playgroud) c# model-binding asp.net-web-api asp.net-core asp.net-core-webapi
c# ×8
.net ×2
asp.net-core ×2
asp.net ×1
browser ×1
dom ×1
hashset ×1
html ×1
html5 ×1
java ×1
javascript ×1
junit ×1
lambda ×1
linq ×1
meta ×1
php ×1
reflection ×1
replication ×1
scroll ×1
sql-server ×1
string ×1