1

好的,所以,我可能是疯了,但是否有可能返回一个未知类型的值并让它获得函数?

基本上是一个看起来像......

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();

请&谢谢

编辑:只是补充一下,有没有办法让它出现在智能感知中?

4

2 回答 2

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
于 2012-10-05T23:05:48.393 回答
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();
于 2012-10-05T23:09:37.677 回答