我有一个下拉列表,通过检查类的方法并包括与特定签名匹配的方法来填充.问题在于从列表中获取所选项目并让委托在类中调用该方法.第一种方法有效,但我无法弄清楚第二种方法的一部分.
例如,
public delegate void MyDelegate(MyState state);
public static MyDelegate GetMyDelegateFromString(string methodName)
{
switch (methodName)
{
case "CallMethodOne":
return MyFunctionsClass.CallMethodOne;
case "CallMethodTwo":
return MyFunctionsClass.CallMethodTwo;
default:
return MyFunctionsClass.CallMethodOne;
}
}
public static MyDelegate GetMyDelegateFromStringReflection(string methodName)
{
MyDelegate function = MyFunctionsClass.CallMethodOne;
Type inf = typeof(MyFunctionsClass);
foreach (var method in inf.GetMethods())
{
if (method.Name == methodName)
{
//function = method;
//how do I get the function to call?
}
}
return function;
}
Run Code Online (Sandbox Code Playgroud)
如何使第二种方法的注释部分工作?我如何MethodInfo投入代表?
谢谢!
编辑:这是工作解决方案.
public static MyDelegate GetMyDelegateFromStringReflection(string methodName) …Run Code Online (Sandbox Code Playgroud) 当强制推动变化时,这两个git命令有什么区别?
git push -f origin branch 和 git push origin +branch
我注意到有两种方法可以创建对nhibernate的友好的通用友好访问.
IQueryOver<T, T> query= session.QueryOver<T>().Where(criteria);
Run Code Online (Sandbox Code Playgroud)
和
IQueryable<T> query= session.Query<T>().Where(criteria);
Run Code Online (Sandbox Code Playgroud)
每个接口的实现.
IQueryOver<TRoot, TSubType> : IQueryOver<TRoot>, IQueryOver
Run Code Online (Sandbox Code Playgroud)
和
IQueryable<out T> : IEnumerable<T>, IQueryable, IEnumerable
Run Code Online (Sandbox Code Playgroud)
IQueryable实现IEnumerable,因此支持您期望的所有LINQ友好的东西.我正在倾向于这个实现,但是想知道是否有人知道QueryOver的目的是什么,你无法用Query完成?
using (FileStream fileStream = new FileStream(path))
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
现在我知道using模式是IDisposable的一个实现,即设置了Try/Catch/Finally并在对象上调用Dispose.我的问题是如何处理Close方法.
MSDN说它没有被调用,但我已经读过了.
我知道FileStream继承自Stream,这里解释了.现在说不要覆盖Close(),因为它是由Dispose()调用的.
那么有些类只是在Dispose()方法中调用Close()或者使用调用Close()吗?
我在一个中等规模的团队工作,我经常遇到这些痛苦的大班文件.我的第一个倾向是用刀子去找他们,但这通常会让事情变得更糟,让我陷入一种糟糕的心态.
例如,假设您刚刚获得了Windows服务.现在这个服务中存在一个错误,你需要弄清楚服务的作用,然后你才有希望修复它.你打开服务,看到有人决定只使用一个文件.Start方法就在那里,Stop方法,Timers,所有处理和功能.我正在谈论成千上万行代码.一百行代码下的方法很少见.
现在假设你不能重写整个班级,而这些上帝课程只会不断出现,处理它们的最佳方法是什么?你从哪里开始的?你先尝试做什么?你是如何应对这种事情的,而不只是想要全力以赴.
如果你有一些策略只是为了控制你的脾气,这也是受欢迎的.
提示远远:
编辑:
查尔斯康威推荐一个播客,结果非常有帮助.链接
Michael Feathers(播客中的人)开头的前提是,他们太害怕简单地将一个项目从源代码控制中取出来直接玩它然后扔掉它们.我可以说我对此感到内疚.
他基本上说要把你想要了解的项目拿到更多,然后开始将它拆开.发现它的依赖关系,然后打破它们.随处可见.
伟大提示 获取在其他地方使用的大类,并使其实现一个emtpy接口.然后使用类获取代码并让它实例化接口.这将为您提供代码中该大型类的所有依赖项的完整列表.
关于上述文章的类似主题,但更具体的说明.您如何处理视图状态中的项目(因此它们包含在提交中),但也可以通过AJAX进行更改.例如,假设我们有一个通过AJAX Web服务调用(而不是更新面板)填充的下拉列表.下拉列表的项目更改后,如何让页面验证?
我找不到与我的问题完全匹配的问题,尽管存在许多javascript范围问题.这是我目前的问题代码.
var my_var = "blank";
var MyFunc = function() {
my_var = "one";
//var my_var = "two";
}
alert(my_var);
MyFunc();
alert(my_var);
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我会被警告"空白",然后按照预期"一个".但是,如果我取消注释那一行,那么它看起来像这样.
var my_var = "blank";
var MyFunc = function() {
my_var = "one";
var my_var = "two";
}
alert(my_var);
MyFunc();
alert(my_var);
Run Code Online (Sandbox Code Playgroud)
我被警告"空白",然后"空白".这不是我所期望的,我发现添加一行会消除行为令人困惑.谁能解释一下这里发生了什么?我在firefox和safari中都看到了这种行为.
在阅读了关于@private的问题后,我明白了它是如何工作的.但是,由于所有变量都默认为@protected,并且在没有定义访问器的情况下无法真正访问变量,@public究竟做了什么?你什么时候用它?
我正在查看YUI Compressor,并在ECMA.NET项目中遇到了这段代码(如果您感兴趣,可以使用Continuation文件).
protected internal override int FindPrototypeId (string s)
{
int id;
#region Generated PrototypeId Switch
L0: {
id = 0;
string X = null;
if (s.Length == 11) { X = "constructor"; id = Id_constructor; }
if (X != null && X != s && !X.Equals (s))
id = 0;
}
EL0:
#endregion
return id;
}
Run Code Online (Sandbox Code Playgroud)
我不知道L0:和EL0:在这里做什么,以前从未见过这个.这个词对谷歌来说似乎也太基础了.
有人知道这是什么一回事吗?
鉴于以下设置和代码片段,您可以提出使用其中一个的原因是什么?我使用其中任何一个都有几个论点,但我很好奇其他人的想法.
建立
public class Foo
{
public void Bar()
{
}
}
Run Code Online (Sandbox Code Playgroud)
Snippet One
var foo = new Foo();
foo.Bar();
Run Code Online (Sandbox Code Playgroud)
小片二
new Foo().Bar();
Run Code Online (Sandbox Code Playgroud) c# ×5
ajax ×1
asp.net ×1
coding-style ×1
debugging ×1
delegates ×1
git ×1
god-object ×1
goto ×1
iphone ×1
javascript ×1
label ×1
nhibernate ×1
objective-c ×1
orm ×1
reflection ×1
validation ×1