2

如果使用某个构造函数,有没有办法隐藏/显示方法?IE:

public class SomeClass
{
    public SomeClass(string methodA)
    {

    }

    public SomeClass(int methodB)
    {

    }

    public string MethodA()
    {
        return "";
    }

    public int MethodB()
    {
        return 0;
    }
}

如果SomeClass(string methodA)使用,那么只有MethodA()当我实例化一个新SomeClass对象时才可用?同样什么时候SomeClass(int methodB)用,那么MethodB()就可以用了吗?

谢谢你们!

4

3 回答 3

5

不,这是不可能的。

更有可能的是您想使用泛型:

public interface IFoo<T>
{
    T Method();
}

public class IntFoo : IFoo<int>
{
    int value;
    public IntFoo(int value)
    {
        this.value = value;
    }

    public int Method()
    {
        return value;
    }
}

public class StringFoo : IFoo<string>
{
    string value;
    public StringFoo(string value)
    {
        this.value = value;
    }

    public string Method()
    {
        return value;
    }
}

如果您不需要将其限制为字符串或整数(或不想),那么这样的事情可能会起作用,甚至更好:

public class Foo<T>
{
    private T value;
    public Foo(T value)
    {
        this.value = value;
    }

    public T Method()
    {
        return value;
    }
}
于 2012-12-05T21:51:11.547 回答
0

不,这是不可能的。您最好创建一个抽象类,并创建两个从抽象类继承的独立类。请参阅抽象设计模式。

于 2012-12-05T21:49:17.423 回答
0

您最好为您的课程使用泛型。它比您可能正在寻找的流动性要少一些(因为您必须在类声明中定义类型),但我认为它完成了您主要想要的。

public class SomeClass<T>
{
    public SomeClass(T value)
    {
    }

    public T Method() { return default(T); }
}

这意味着创建类的实例将使用“new SomeClass(0);” 而不是简单的“new SomeClass(0);”

于 2012-12-05T22:06:52.120 回答