如何创建一个接受类和接口作为参数的扩展方法

时间:2014-01-05 10:29:23

标签: c#

例如,我正在努力实现这一目标:

class A
{
}

class B
{
}

interface C 
{
  void SomeMethod();
}

A.ExtentionMethod(B,C);

请注意,我将Type A和C传递给ExtentionMethod(非实例)

4 个答案:

答案 0 :(得分:1)

使用此代码:

 public static class Util
    {
        public static void ExtensionMethod<t1, t2>(this A aobj)
   { 
   }
    }

答案 1 :(得分:1)

另一种选择是使用泛型而不是传递参数

public static class Extensions
{
   public static void ExtensionMethod<T1, T2>(this A a)
   { 
       // ANywhere you would use the parameters use T1 and T2 instead.
   }
}

A a;
a.ExtensionMethod<B, C>();

IMO,这比使用typeof()时更具可读性。

答案 2 :(得分:0)

public static class Extensions
{
   public static void ExtensionMethod(this A a, Type c1, Type c2)
   { 
   }
}

A a;
a.ExtensionMethod(typeof(B), typeof(C));

但是,我不知道这是多么有用。请详细说明你想要的东西。

答案 3 :(得分:0)

你可以使用这样的界面

public static class Extension
{
    public static void Method1(this IMyInterface myInterface, int i)
    {
        Console.WriteLine("Extension.Method1");
    }

    public static void Method1(this IMyInterface myInterface, string s)
    {
        Console.WriteLine("Extension.Method1");
    }
}