我有一个用于检查方法参数的类,您可以在表单中调用它:
public void SomeMethod(string anArg)
{
Ensure.ArgumentNotNull(() => anArg);
}
Run Code Online (Sandbox Code Playgroud)
如果参数为null,则ArgumentNullException
抛出具有该属性名称的参数.这样做是这样的:
public static void ArgumentNotNull<T>(Expression<Func<T>> expression) where T : class
{
var value = expression.Compile()();
if (value == null)
{
throw new ArgumentNullException(expression.GetMemberName());
}
}
Run Code Online (Sandbox Code Playgroud)
GetMemberName
我写的扩展方法在哪里.
我遇到的问题是对Compile的调用非常慢,所以我想缓存结果,但我似乎无法想出一个足够独特的缓存密钥以防止缓存冲突,但不是那么独特,缓存变得无效.
到目前为止,我的最大努力是:
internal static class ExpressionCache<T>
{
private static readonly Dictionary<string, Func<T>> Cache = new Dictionary<string, Func<T>>();
public static Func<T> CachedCompile(Expression<Func<T>> targetSelector)
{
Func<T> cachedFunc;
var cacheKey = targetSelector + targetSelector.Body.ToString();
if (!Cache.TryGetValue(cacheKey, out cachedFunc))
{
cachedFunc = targetSelector.Compile();
Cache[cacheKey] = …
Run Code Online (Sandbox Code Playgroud) 假设我有一个包含名为A,B,C,D的活动的应用程序.现在,考虑A已经作为根活动启动而B已经从A启动并且C已经从B启动并且D已经从C启动.现在我在活动D中有一个名为"删除"的按钮.如果假设,我按下活动D中的"删除"按钮,然后应从历史堆栈中删除活动B和活动C. 在活动D中按回键应显示活动A而不是C.我不知道如何实现这一点.任何人都可以帮我解决这个问题吗?
我有以下代码使用smarty模板引擎
在php文件中:
$smarty->assign('SITE_URL', 'http://localhost/mis/');
Run Code Online (Sandbox Code Playgroud)
在tpl文件中:
{literal}
<script type="text/javascript" src="{$SITE_URL}lightbox/js/prototype.js"></script>
<script type="text/javascript" src="{$SITE_URL}lightbox/js/scriptaculous.js?load=effects,builder"></script>;
<script type="text/javascript" src="{$SITE_URL}lightbox/js/lightbox.js"></script>
{/literal}
Run Code Online (Sandbox Code Playgroud)
我希望代码在html视图中呈现如下所示
<script type="text/javascript" src="http://localhost/mis/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="http://localhost/mis/lightbox/js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="http://localhost/mis/lightbox/js/lightbox.js"></script>
Run Code Online (Sandbox Code Playgroud)
请帮我解决一下这个.
在我的c#应用程序中,我正在使用RSA签名文件,然后由上传的人上传到我公司的数据库中,在这里我必须选择SHA-1或SHA-2来计算哈希值.
与编程中的任何其他组件一样,我知道必须有一个"在这里使用"和"在那里使用"这两个组件.
那么,什么时候?那时呢?
编辑:
我的问题是:性能有什么不同?而不是关于安全性,因为我已经知道SHA-2比SHA-1更安全.
在此链接中,不同类型的SHA-2之间的比较注意何时使用SHA-512以及何时不使用SHA-512.我需要一个关于SHA-1和SHA-2的类似论点.
在我的应用程序(Windows 7,VS2010)中,我必须在成功打印图像后减少信用计数器.无论如何,在开始整个过程之前,我想了解打印机状态,以便在纸张,卡纸等方面提醒用户.现在,环顾四周我发现了几个使用Windows WMI的例子,但是......从来没有用过.例如,使用THIS代码段,如果我取出纸张,打开封面,打印机状态也随时可用...关闭打印机.
现在打印机状态总是很好,我正在办公室测试在家里舒适关闭的打印机.让我用炸药引爆设备以获得打印机错误状态?
这是我用过的代码
ManagementObjectCollection MgmtCollection;
ManagementObjectSearcher MgmtSearcher;
//Perform the search for printers and return the listing as a collection
MgmtSearcher = new ManagementObjectSearcher("Select * from Win32_Printer");
MgmtCollection = MgmtSearcher.Get();
foreach (ManagementObject objWMI in MgmtCollection)
{
string name = objWMI["Name"].ToString().ToLower();
if (name.Equals(printerName.ToLower()))
{
int state = Int32.Parse(objWMI["ExtendedPrinterStatus"].ToString());
if ((state == 1) || //Other
(state == 2) || //Unknown
(state == 7) || //Offline
(state == 9) || //error
(state == 11) //Not Available
)
{
throw new …
Run Code Online (Sandbox Code Playgroud) 在MATLAB(r2009b)中,我有一个包含值2147484101的uint32变量.
这个数字(4字节)是在抓取过程中从数字机器视觉相机中提取的.根据我的理解,它具有相机快门速度的单精度形式(应接近1/260s = 3.8ms).
如何使用MATLAB中提供的内容将此32位数转换为IEEE单精度浮点表示?
对于变量n中提到的值,我尝试使用nn = dec2hex(n,16)和hex2num(nn)的组合.但似乎hex2num期望十六进制编码是双精度的而不是单一的,因为它在这里.至少我用这种方法得到了奇怪的数字.
有任何想法吗?
编辑:尝试@Matt的答案如下:
typecast(uint32(2147484101),'single') %# without swapbytes
typecast(swapbytes(uint32(2147484101)),'single') %# with swapbytes
Run Code Online (Sandbox Code Playgroud)
这使:
ans =
-6.3478820e-043
ans =
-2.0640313e+003
Run Code Online (Sandbox Code Playgroud)
我在http://www.h-schmidt.net/FloatApplet/IEEE754.html上尝试了IEEE 754转换器(JAVA applet).
使用:
format hex
typecast(uint32(2147484101),'uint8') %# without swapbytes
typecast(swapbytes(uint32(2147484101)),'uint8') %# with swapbytes
Run Code Online (Sandbox Code Playgroud)
给
ans =
c5 01 00 80
ans =
80 00 01 c5
Run Code Online (Sandbox Code Playgroud)
将这些字节输入applet(十六进制)给出了与MATLAB相同的数字.
我想将我的应用文化设置为我想要的任何东西,无论操作系统文化是什么.为了获得这个,我使用了"fa-IR"作为文化的CultureInfo类,但它使用"GregorianCalendar"作为默认日历而不是.NET PersianCalendar类.所以我试图从CultureInfo派生一个新类来实现我的客户文化:
/// <summary>
/// Represents culture specific information, Persian calendar and number format info for Iran.
/// </summary>
public class PersianCultureInfo : CultureInfo
{
private Calendar _calendar = new PersianCalendar();
public PersianCultureInfo()
: base("fa-IR", true)
{
}
/// <summary>
/// Persian calendar with solar system algorithm for Iran.
/// </summary>
public override Calendar Calendar
{
get
{
return this._calendar;
}
}
public static PersianCultureInfo Create()
{
PersianCultureInfo culture = new PersianCultureInfo();
culture.PerpareDateTimeFormatInfo();
return culture;
}
private void PerpareDateTimeFormatInfo()
{ …
Run Code Online (Sandbox Code Playgroud) 我正在引用这个答案(强调我的):
看看ContractClass和ContractClassFor属性.这允许您在单独的程序集中编写具有代码契约的类.这使您可以使合同可用于开发工作,不会使代码混乱,也意味着您不必使用实时代码部署合同
你为什么不想要部署合同?
从最佳实践角度来看,合同是否严格用于开发和质量控制?
我有一个绘制圆角矩形的类,在它周围放置一个边框,中间有一段文字.
我想在文本中添加阴影/轮廓,以便文本看起来像UINavigationBar上的标题.
CoreGraphics可以实现吗?
我正在尝试使用以下代码确定iphone是否可以连接到我的IP地址
struct sockaddr_in server_address;
server_address.sin_len = sizeof(server_address);
server_address.sin_family = AF_INET;
server_address.sin_port = htons(8888);
server_address.sin_addr.s_addr = inet_addr("1.2.3.4");
Reachability *r = [[Reachability reachabilityWithAddress:&server_address ] retain];
NetworkStatus internetStatus = [r currentReachabilityStatus];
Run Code Online (Sandbox Code Playgroud)
但它始终表示状态为"Reachable",与我在IP地址中提供的内容无关.我做错了吗?为什么这不起作用?感谢您的见解.
c# ×4
iphone ×2
.net ×1
android ×1
binary ×1
caching ×1
cocoa-touch ×1
cultureinfo ×1
expression ×1
ieee-754 ×1
matlab ×1
objective-c ×1
persian ×1
php ×1
printing ×1
reachability ×1
rsa ×1
security ×1
sha ×1
smarty ×1
status ×1