Tag: 代表

代表们的目标c

首先,我应该告诉你,我对Objective C或C#知之甚少。所以,当我的一位同事问我是否有类似于Objective C的代表时,我想知道Objective-CI中是否存在这样一个概念,猜测我们使用的代表iphone编程不一样.C#委托是函数指针吗? 在处理多个视图时,这样的设施会很好。我在哪里可以找到信息?

无法确定条件表达式的类型(Func)

将方法分配给Func类型时,我得到编译错误Type of conditional expression cannot be determined because there is no implicit conversion between ‘method group’ and ‘method group’ 。 这只发生在? : ? :运营商。 代码: public class Test { public static string One(int value) { value += 1; return value.ToString(); } public static string Two(int value) { value += 2; return value.ToString(); } public void […]

BeginInvoke抛出exception

我有以下问题。 FindRoot实际上是在第三方dll中,我无法控制它。 它必须通过Begin调用来调用 。 有时,FindRoot方法会抛出exception。 这导致我的整个应用程序崩溃。 现在,即使FindRoot抛出exception,我如何防止我的应用程序崩溃。 delegate void AddRoot(double number); public static void FindRoot(double number) { throw new Exception();/// sometimes is thrown. } static void back_DoWork(object sender, DoWorkEventArgs e) { AddRoot root = FindRoot; root.BeginInvoke(12.0, root.EndInvoke, root); }

从methodinfo获取委托

我有一个下拉列表,通过检查类的方法并包括与特定签名匹配的方法来填充。 问题在于从列表中获取所选项目并让委托在类中调用该方法。 第一种方法有效,但我无法弄清楚第二种方法的一部分。 例如, 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) […]

行动代表,仿制药,协方差和逆变

我有两个商业合同类: public BusinessContract public Person : BusinessContract 在另一个类中,我有以下代码: private Action _foo; public void Foo( Action bar ) where T : BusinessContract { _foo = bar; } 以上甚至都不会编译,这让我感到困惑。 我将T限制为BusinessContract,为什么编译器不知道bar可以分配给_foo? 为了解决这个问题,我们尝试将其更改为以下内容: public void Foo( Action bar ) where T : BusinessContract { _foo = (Action)bar; } 现在编译器很高兴,所以我在我的应用程序的其他地方编写了以下代码: Foo( p => p.Name = “Joe” ); 该应用程序在运行时因InvalidCastException而爆炸。 我不明白。 我不应该能够将更具体的类型转换为不太具体的类型并分配它吗? […]

如何使用null目标创建实例方法的委托?

我注意到Delegate类有一个Target属性,(可能)返回委托方法将执行的实例。 我想做这样的事情: void PossiblyExecuteDelegate(Action method) { if (method.Target == null) { // delegate instance target is null // do something } else { method(10); // do something else } } 在打电话时,我想做的事情如下: class A { void Method(int a) {} static void Main(string[] args) { A a = null; Action action = a.Method; PossiblyExecuteDelegate(action); } } 但是当我尝试构造委托时,我得到一个ArgumentException(委托给一个实例方法不能有一个null’this’)。 […]

C#委托给两个具有不同参数的方法

我使用以下方法: public void M1(Int32 a) { // acquire MyMutex DoSomething(a); // release MyMutex } 和 public void M2(String s, String t) { // acquire MyMutex DoSomethingElse(s, t); // release MyMutex } 从我到目前为止所发现的情况来看,似乎不可能对具有不同签名的两种方法使用单个委托。 有没有其他选择写这样的东西: public void UsingMutex(…) { // acquire MyMutex … // release MyMutex } UsingMutex(M1); UsingMutex(M2); 我现在能想到的只是使用两个委托和一个布尔标志来知道要调用哪个委托,但这不是一个长期的解决方案。 可以将generics与代表结合起来吗? 如果是这样,您是否有任何类型的文档链接? 环境:C#2.0

C# – 有人能告诉我为什么以及在哪里使用代表?

我想我理解C#中委托的概念作为方法的指针,但是我找不到任何好的例子来说明使用它们的好主意。 有哪些例子要么代表更优雅/更好,要么无法使用其他方法解决?

使用DynamicInvoke直接调用委托和使用DynamicInvokeImpl有什么区别?

DynamicInvoke和DynamicInvokeImpl的文档都说: 动态调用(后期绑定)当前委托表示的方法。 我注意到DynamicInvoke和DynamicInvokeImpl采用了一个对象数组而不是一个特定的参数列表(这是我猜的后期部分)。 但这是唯一的区别吗? DynamicInvoke和DynamicInvokeImpl之间有什么区别。

在任何时候访问类属性(获取或设置)时执行的方法?

C# – .net 3.5 我有一系列inheritance自同一基类的类。 我希望在访问(获取或设置)derrived类中的属性时调用基类中的方法。 但是,我不想在每个属性中编写代码来调用基类…相反,我希望有一种声明方式将此活动“接收”到基类中。 在需求中添加一些spice,我需要确定访问的属性的名称,属性值及其类型。 我想解决方案将是委托,generics和reflection的巧妙组合。 我可以设想在运行时创建某种类型的委托分配数组,但是在构造函数中迭代MemberInfo会影响性能,而不是我想要的。 同样,我希望有更直接的“声明”方式来做到这一点。 任何想法都非常感谢!