如果使用某个构造函数,有没有办法隐藏/显示方法?即:
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()
可用吗?
谢谢大家!
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
没有。这是不可能的。你最好创建一个抽象类,并创建两个从Abstract Class继承的独立类。参考抽象设计模式。
答案 2 :(得分:0)
您可能最好在课堂上使用泛型。它的流动性比你可能要寻找的要少(因为你必须在类声明中定义类型),但我认为它可以完成你主要想要的东西。
public class SomeClass<T>
{
public SomeClass(T value)
{
}
public T Method() { return default(T); }
}
这意味着创建类的实例将使用“new SomeClass(0);”而不是简单地“new SomeClass(0);”