我看到过一些代码,返回的对象有一个Visible成员,可以设置为true。我想模仿这个功能,但我收到错误' object'不包含'可见'的定义并且没有扩展方法'可见'接受类型'对象'的第一个参数。可以找到。
以下是有效的示例代码:
public AP.GlobalClass APObj = new AP.GlobalClass();
APObj.Application().Visible = true;
以下是我正在努力做的事情:
public APControl.A2APGlobalClass APObj_B = new APControl.A2APGlobalClass();
APObj_B.Application().Visible = true; //Error goes with this line
public class A2APGlobalClass
{
public AP.GlobalClass APObj = new AP.GlobalClass();
public Object Application() //Do I need to change "Object" to something else?
{
return APObj.Application(); //This returned object "Object" type does no longer contain the Visible member.
}
答案 0 :(得分:1)
代码可能是封闭源代码,但程序集公开的类型的公共成员必须是可见的。如果您在任何类型的体面环境中工作,当您将鼠标悬停在该成员上时,智能感知将告诉您返回类型。如果您的编辑器没有智能感知,则还有其他方法可以提取此信息。
参考@JeroenVannevel的评论,您可能想要了解静态与动态类型。 C#是一种静态类型语言,因此您无法在类型Object
的引用上调用Visible属性,因为Object没有Visible属性。您需要返回以下内容之一而不是Object:
例如,对于下面定义的类型,您可以返回除A:
之外的任何类型interface I { bool Visible { get; set; } }
class A { }
class B : I { public bool Visible { get; set; } }
class C : B { }
class D : C { }