如何调用受保护的构造函数?
public class Foo{
public Foo(a lot of arguments){}
protected Foo(){}
}
var foo=???
Run Code Online (Sandbox Code Playgroud)
这显然未通过测试:
public class FooMock:Foo{}
var foo=new FooMock();
Assert(typeof(Foo), foo.GetType());
Run Code Online (Sandbox Code Playgroud) 我正在阅读有关扩展方法的内容,并与他们进行一起讨论,看看它们是如何工作的,我试过这个:
namespace clunk {
public static class oog {
public static int doubleMe(this int x) {
return 2 * x;
}
}
class Program {
static void Main() {
Console.WriteLine(5.doubleMe());
}
}
}
Run Code Online (Sandbox Code Playgroud)
并按预期工作,使用doubleMe方法成功扩展int,打印10.
接下来,作为一个老C家伙,我想知道我是否可以这样做:
namespace clunk {
public static class BoolLikeC {
public static bool operator true(this int i) { return i != 0; }
public static bool operator false(this int i) { return i == 0; }
}
class Program {
static void Main() {
if ( 7 …Run Code Online (Sandbox Code Playgroud) 我有一个包含客户帐号的数据库表.在同一个表中是与生产格式不匹配的测试帐户:例如,'A1111'是生产,但'JTest'不是.我有正则表达式只会拉我的生产帐户.我需要一个特定的编译查询来只提取生产帐户.该查询按地区和日期为我提供了客户数量; 和每个地区的概念计数:
getCustomerDistribution = CompiledQuery.Compile<DataContext, String, DateTime, IEnumerable<ServerLoad>>(
(context, region, processDate) => (from cust in context.GetTable<tbl_CustomerDistro>()
where cust.ProcessedDate.Date == processDate.Date
where cust.Region == region
where Regex.IsMatch(cust.AcctNum, ProductionMask)
group cust by new
{
cust.Region,
cust.Concept
} into custDistro
orderby custDistro.Key.Region
select new CustomerDistro
(
custDistro.Key.Region,
custDistro.Key.Concept,
custDistro
.Where(c => c.Concept == custDistro.Key.Concept)
.Select(c => c.Concept).Count()
)));
Run Code Online (Sandbox Code Playgroud)
问题是我在运行时收到以下消息:
方法'Boolean IsMatch(System.String,System.String)'没有支持的SQL转换.
我在看用户定义的函数:
static Func<striing, bool> IsProduction = (AcctNum) => Regex.IsMatch(AcctNum, ProductionMask);
Run Code Online (Sandbox Code Playgroud)
这也不起作用.我不想迭代检索到的记录以进一步过滤,除非没有其他方法可以做到这一点.
有没有办法用Predicate Builder做到这一点?
我认为另一种选择是使用:
where SqlMethods.Like (cust.AcctNum, ProductionMask)
但是,我的ProductionMask是为Regex编写的:
^[B,G]\d{4}$
Run Code Online (Sandbox Code Playgroud)
有没有办法用SqlMethods.Like(...)做到这一点? …
我希望能够反复拖放相同的源元素.
在拖动图像的那一刻,它被成功克隆 - 即原始图像保持不变并且克隆很好地落入其新位置,但旧图像不再可拖动.检查元素显示class为属性(无值),即不显示class="ui-draggable"
正如你所看到的那样,我试图在克隆之后重新启用可拖动性,但它无法正常工作.
这是代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"></script>
<title></title>
<script language="javascript" type="text/javascript">
var copy = 0;
var dragOptions = {
helper: 'clone',
cursor: 'hand',
revert: 'invalid'
};
$(document).ready(function () {
$("img").draggable(dragOptions);
$("ul#bag > li").droppable({
drop: function (event, ui) {
copy++;
var clone = $(ui.draggable).clone().attr("id", "img_" + copy);
$(this).append(clone);
clone.css("left", 0).css("top", 0);
$(ui.draggable).draggable(dragOptions);
}
});
});
</script>
<style type="text/css">
li
{
position: relative; …Run Code Online (Sandbox Code Playgroud) 我有一个先前的问题,我提供了我的解决方案; 但是,ConcurrentQueue<T>因为我在.Net 3.5上,所以我没有访问权限.我需要Queue<T>允许并发.我读了这个问题,如果一个项目不在队列中并且线程方法试图使项目出列,则似乎存在问题.
我现在的任务是确定是否可以派生自己的并发队列类.这就是我想出的:
public sealed class ConcurrentQueue : Queue<DataTable>
{
public event EventHandler<TableQueuedEventArgs> TableQueued;
private ICollection que;
new public void Enqueue(DataTable Table)
{
lock (que.SyncRoot)
{
base.Enqueue(Table);
}
OnTableQueued(new TableQueuedEventArgs(Dequeue()));
}
// this is where I think I will have a problem...
new public DataTable Dequeue()
{
DataTable table;
lock (que.SyncRoot)
{
table = base.Dequeue();
}
return table;
}
public void OnTableQueued(TableQueuedEventArgs table)
{
EventHandler<TableQueuedEventArgs> handler = TableQueued;
if …Run Code Online (Sandbox Code Playgroud) 如何从表单中删除最大化按钮?我已经禁用它但它仍然出现,它只是不起作用.我想要一个只有关闭和最小化按钮的表单.这是一个Windows窗体应用程序,我正在使用Visual Studio 2010.
<select id="myElement" multiple="multiple">
<option value="1">Category Type</option>
<option value="158">itemOne</option>
<option value="157">itemTwo</option>
<option value="7">My Type</option>
<option value="20">itemThree</option>
<option value="21">itemFour</option>
<option value="22">itemFive</option>
<option value="8">Category Yet Another</option>
<option value="31">itemCheese</option>
<option value="32">itemBrain</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我需要动态转换它,以便"类别"选项(任何不以"item"开头的)是一个optgroup,包装whaterver在它之后直到下一个Category选项,所以上面的结果看起来像:
<select id="myElement" multiple="multiple">
<optGroup label="Category Type">
<option value="158">One</option>
<option value="157">Two</option>
</optGroup>
<optGroup label="My Type">
<option value="20">Three</option>
<option value="21">Four</option>
<option value="22">Five</option>
</optGroup>
<optGroup label="Category Yet Another">
<option value="31">Cheese</option>
<option value="32">Brain</option>
</optGroup>
</select>
Run Code Online (Sandbox Code Playgroud)
我如何迭代这个并更改值以使用jQuery实现所需的效果?
我有一个字符串如下:
b'\x00\x00\x00\x00\x07\x80\x00\x03'
Run Code Online (Sandbox Code Playgroud)
如何将其转换为字节数组?...并从字节回到一个字符串?
我无法搞清楚我的AppDomain.Unload(...)电话.我用我之前的问题中的代码详细解释了一下.事实证明,我执行了几个步骤,显然,我不需要.但是,我很确定在创建AppDomain并将其保存在集合中时:
private static Dictionary<string , AppDomain> HostDomains;
void StartNewDomain(string domainName)
{
AppDomain domain = AppDomain.CreateDomain(domainName);
HostDomains[domainName] = domain;
}
Run Code Online (Sandbox Code Playgroud)
......当你完成它之后,你必须卸载它:
if (HostDomains.ContainsKey(domainName))
{
AppDomain.Unload(HostDomains[domainName]);
HostDomains.Remove(domainName);
}
Run Code Online (Sandbox Code Playgroud)
然后从集合中删除域.
但是,当我卸载域时,整个应用程序正在结束.如果我删除卸载,一切都很好......我们只是从集合中删除域.但我担心我的孩子AppDomain 没有真正卸载.它可能最终得到GC我猜,但这并没有给我一个温暖的模糊.
子AppDomain程序集(Windows窗体应用程序)通过我继承的适配器类中引用的接口(IModule)异步启动MarshalByRefObject.我想知道这个对IModule的Start()(插件模块程序集实现的)的引用是不是正确编组(因为我的实现).因此,当调用Shutdown()方法时,整个应用程序都会死掉.我应该使我的IModule成为一个抽象类,所以它应该继承MBR吗?困惑...
看完我的代码后:
// instances the module for access to the module's Start() method
IModule module = (IModule)domain.CreateInstanceAndUnwrap(
ModuleManager.Modules[modName].Name,
ModuleManager.Modules[modName].EntryPoint.FullName);
Run Code Online (Sandbox Code Playgroud)
...我担心,因为IModule是一个接口,即使我在子域中创建一个实例,程序集也会泄漏到我的主AppDomain中.因此,当我尝试卸载子域时,两个域都被卸载.这是正确的吗?什么可能是通过MBR(适配器)对象提供Start()和Stop()方法的最佳解决方案?
更新:请参阅下面的答案进行更改 -
好的,没有泄漏 - 一切都继承了MBR:
我还做错了吗?我尝试了几件事情,但这似乎是错误的或不完整的.当我告诉ModuleAdapter关闭时,它会调用AppDomain.Unload(AppDomain.CurrentDomain)并且Host域也会停止.我仍然在应用程序退出时获得一些第一次机会异常.但是形式(myForm)已被告知.Close().
所以,我仍在寻找正确的方法......
速度,优化和可扩展性是Udp和Tcp协议之间的典型比较.Tcp吹嘘可靠性有一点额外开销的缺点,但速度很好,非常好.一旦Tcp套接字被实例化,保持套接字打开需要一些开销.但与Udp所描述的负担相比,哪种协议实际上有更多的开销?我也听说过Tcp存在可扩展性问题......但是互联网(网页/服务器)在Tcp上运行 - 那么Tcp是什么阻碍了可扩展性呢?
好的...所以Udp不需要保持连接打开的开销.但是,它要求您编写额外的方法以确保所有数据包都到达那里,希望按照您希望它接收的顺序.如果未完整收到数据包,则必须告知客户端或服务器重新发送.此外,您还必须为部分数据包保留某种消息收集,重建部分消息,并在最终处理消息之前检查完整的消息.更不用说如果消息的第二部分永远不会成功,你必须要么重新发送整个内容,要么重新发送我们缺少的部分,或者其他什么.
基本上,我的问题是:
注意:我不反对为服务器实现Udp选项.我们在.Net 3.5框架上使用C#.所以我也对处理Udp 负担的最佳实践感兴趣.我也在套接字级别使用异步方法,而不是使用TcpListener,TcpClient等.