Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建接受类和接口作为参数的扩展方法_C# - Fatal编程技术网

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

C# 如何创建接受类和接口作为参数的扩展方法,c#,C#,例如,我试图实现以下目标: class A { } class B { } interface C { void SomeMethod(); } A.ExtentionMethod(B,C); 请注意,我正在将类型A和C传递给ExtensionMethod(不是实例) 然而,我不认为这是多么有用。请更具体地说明您想要什么。使用以下代码: public static class Util { public static void ExtensionMetho

例如,我试图实现以下目标:

class A
{
}

class B
{
}

interface C 
{
  void SomeMethod();
}

A.ExtentionMethod(B,C);
请注意,我正在将类型A和C传递给ExtensionMethod(不是实例)

然而,我不认为这是多么有用。请更具体地说明您想要什么。

使用以下代码:

 public static class Util
    {
        public static void ExtensionMethod<t1, t2>(this A aobj)
   { 
   }
    }
公共静态类Util
{
公共静态void扩展方法(这是aobj)
{ 
}
}

您可以像这样使用界面

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");
    }
}

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

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>();
公共静态类扩展
{
公共静态void扩展方法(此方法)
{ 
//在任何使用参数的地方,都可以使用T1和T2。
}
}
A A;
a、 ExtensionMethod();

在我看来,这比使用
typeof()

时可读性更强。请重新格式化您的问题。谢谢。这正是我想要的。
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>();