相关疑难解决方法(0)

使用另一个部分类覆盖部分类的默认构造函数

我不认为这是可能的,但如果是,那么我需要它:)

我有一个由Visual Studio 2008从wsdl.exe命令行工具自动生成的代理文件.

代理输出是部分类.我想覆盖生成的默认构造函数.我宁愿不修改代码,因为它是自动生成的.

我尝试制作另一个部分类并重新定义默认构造函数,但这不起作用.然后我尝试使用覆盖和新关键字,但这不起作用.

我知道我可以继承部分类,但这意味着我必须将所有源代码更改为指向新的父类.我宁愿不必这样做.

任何想法,解决方法或黑客?

//Auto-generated class
namespace MyNamespace {
   public partial class MyWebService : System.Web.Services.Protocols.SoapHttpClientProtocol {
      public MyWebService() {
         string myString = "auto-generated constructor";
         //other code...
      }
   }
}

//Manually created class in order to override the default constructor
namespace MyNamespace {
   public partial class MyWebService : System.Web.Services.Protocols.SoapHttpClientProtocol {
      public override MyWebService() { //this doesn't work
         string myString = "overridden constructor";
         //other code...
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

c# wsdl overriding web-services partial-classes

53
推荐指数
3
解决办法
5万
查看次数

创建C#属性以禁止方法执行

我希望创建一个自定义属性来抑制在C#中执行方法,即使它被调用.例如,在下面的代码块中,如果方法具有"跳过"属性,即使从Main调用它也不应该执行.

public class MyClass {

  public static void main()
  {
    aMethod();  
  }

  [Skip]
  public void aMethod() {
    ..
  }

}
Run Code Online (Sandbox Code Playgroud)

如何使用C#中的反射来实现这一目标?


在下面的代码片段中,我设法提取了带有Skip属性的方法,我无法弄清楚如何阻止它们执行!

MethodInfo[] methodInfos = typeof (MyClass).GetMethods();

foreach (var methodInfo in methodInfos)
{
  if (methodInfo.HasAttribute(typeof(SkipAttribute)))
  {
    // What goes here ??
  }
}
Run Code Online (Sandbox Code Playgroud)

我们非常欢迎任何有正确方向的帮助或建议:)

c# reflection custom-attributes methodinfo

5
推荐指数
1
解决办法
3432
查看次数

在C#中为现有代码添加自定义功能的最佳方法是什么?

比方说,我有很多Web应用程序使用在C#中编译成dll的相同类库,我想更新特定应用程序的类的特定方法.我不想更改现有代码,因为它会影响每个人,我不想从类继承来创建新代码.我只想更改单个应用程序的类的现有方法.

实现此目的的一种方法是将编译的类作为"基础"类,并具有包含继承基类的所有重写类的单独文件.然后应用程序将使用继承的类.然后,要更改单个应用程序的类,您只需更新继承的类.我用这种方法看到的唯一问题是每个应用程序都需要2个文件,一个基类和一个继承(可能没有编译).

任何人都可以推荐更好的方法吗?

c# inheritance

2
推荐指数
1
解决办法
292
查看次数