好的,所以,我可能会疯了但是有可能返回一个未知类型的值并让它获得函数吗?
基本上是一个看似......的功能
public static ?????? Test(char c)
{
if(c == char)
return instance of SOMECLASS
else
return instance of SOMEOTHERCLASS
}
// so i could do
Test(new char()).SOMECLASS_METHOD();
Test(new int()).SOMEOTHERCLASS_METHOD();
请&感谢
编辑:只是要添加,有没有办法让它出现在intellisense中?
答案 0 :(得分:4)
您可以返回dynamic
(在C#4或更高版本中),它允许您使用动态绑定。
如果对象上不存在方法(或属性),那么将允许编写任何方法,并且只在运行时处失败。
例如,您可以写:
class Foo {
void Bar() { Console.WriteLine("Foo.Bar"); }
}
class Bar {
void Baz() { Console.WriteLine("Bar.Baz"); }
}
public static dynamic Test(char c)
{
if (c == 'f') return new Foo();
else return new Bar();
}
有了这个,你可以写:
Test('f').Bar();
Test('q').Baz();
Test('z').Bar(); // Will raise exception at runtime
答案 1 :(得分:0)
public static object Test(char c)
{
if(c == char)
return instance of SOMECLASS
else
return instance of SOMEOTHERCLASS
}
// so i could do
var r = Test(new char());
if (r is SOMECLASS)
(r as SOMECLASS).SOMECLASS_METHOD();
var rr = Test(new int());
if (rr is SOMEOTHERCLASS)
(rr as SOMEOTHERCLASS).SOMEOTHERCLASS_METHOD();