-2

可能重复:
有没有办法强制 C# 类实现某些静态函数?

考虑一个类并考虑到,出于某些原因,您需要强制该类在其中包含一个常量。这将应用于任何一组类。在我的特定情况下,我需要我的一些类在它们内部有一个常量来保存相应的空值。

在我的例子中,那些实现某个接口的类,因为它们必须以某种方式运行,还必须具有我的上下文中需要的三个特殊值(上下文太长而无法解释并且在这里毫无用处)。

所以基本上我需要一种方法来强制我的类在它们内部有一个特定的常量(可以从外部访问)。我知道我可以简单地将常量放在那些类中,但是如果我正在寻找一种方法来告诉编译器:“如果这个类实现了这个接口(例如),那么如果没有那个你不应该编译它持续的!”。

这样,编译器就会进行检查,而不仅仅是可能忘记放置常量的程序员。

我希望我能解释我的问题。提前致谢。

4

3 回答 3

1

所以基本上我需要一种方法来强制我的类在它们内部有一个特定的常量(可以从外部访问)。我知道我可以简单地将常量放在那些类中,但是如果我正在寻找一种方法来告诉编译器:“如果这个类实现了这个接口(例如),如果没有那个你不应该编译它持续的!”。

您可以通过创建一个包含唯一公共构造函数的类来实现类似的目的,该构造函数需要您需要的所有信息/值。因此,例如,您可以使用以下内容:

class myClass{
   public readonly int Value1;
   public readonly string Value2;
   public myClass(int value1, string value2){
         Value1 = value1;
         Value2 = value2;
   }
}

事实上,在这种情况下,程序员被迫实例化对象,为可用的唯一构造函数提供正确的值,并且不能更改两个公共字段的值(由于readonly关键字)。

于 2012-10-10T17:59:43.253 回答
0

上一个关于同一主题的问题的解释:

对静态方法的调用是通过类名完成的,而不是通过对象引用,调用它的 IL 代码将通过定义它的类的名称来调用抽象方法,不一定是您使用的类的名称.

上一篇:为什么我不能在 C# 中使用抽象静态方法?

于 2012-10-10T17:35:05.747 回答
0

将静态方法添加到类中有什么问题?当将静态方法直接编码到类中完全合乎逻辑时,我不明白为什么需要另一层。

 public class MyClass {
      public static MyClass TheMethod(int i){
           // TODO:
      }
 }
于 2012-10-10T17:35:54.387 回答