Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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#_.net_Interface_Static - Fatal编程技术网

C# 实现接口的静态类的替代方案

C# 实现接口的静态类的替代方案,c#,.net,interface,static,C#,.net,Interface,Static,由于一些原因,静态类无法实现接口,我想知道实现两个具有相同方法和不同实现的静态类的最佳实践是什么 头等舱: public static class MyStaticClass1 { public static void DoSomething() { // Do Something here... } } 二等舱: public static class MyStaticClass2 { public static void DoSomethin

由于一些原因,静态类无法实现接口,我想知道实现两个具有相同方法和不同实现的静态类的最佳实践是什么

头等舱:

public static class MyStaticClass1
{
    public static void DoSomething()
    {
        // Do Something here...
    }
}
二等舱:

public static class MyStaticClass2
{
    public static void DoSomething()
    {
        // Do Something here...
    }
}
这些方法必须是静态的,因为它们使用的是只能用于静态方法的
[DllImport]
属性

根据某些运行时条件,在某些运行中,我将在其他运行中使用
MyStaticClass1
,而在其他运行中使用
MyStaticClass2
,但不能同时在同一运行中使用这两种


想法?

这能回答你的问题吗?建议的问题标题是“实现接口的静态类的替代方案”。。。但是关于身体,我没有看到与DllImport的关系,也没有提到接口。但是,您可以将任何接口属性和方法实现重定向到静态成员,因此singleton将是静态的包装器。@OlivierRogier提到DllImport是为了避免忽略静态方法的解决方案,问题的第一行提到了接口。@.FriendOfFriend Yes!要从外部访问
MyClass
的公共静态成员
MyMember
,必须使用
MyClass.MyMember
而不是
myInstance.MyMember
。。。从内部,您只需编写
MyMember
。因此,您可以提供实例成员来实现封装静态成员的接口。你明白我的意思吗?@.FriendOfFriend没有其他方法:静态类不能实现接口,非静态类的静态方法不能是接口实现。我知道这很烦人,因此,正如我所知,唯一的解决方案是:一个实现接口的实例包装器,面向静态,一旦完成了艰苦的工作,您就会很满意。我不认为写一个答案是必要的,如果你只想要一个实例,singleton就是你所需要的。