我有一个名为MyProxyClass
的代理类,它是通过围绕SOAP Web服务WSDL的svcutil.exe
自动生成的。此代理类是抽象System.ServiceModel.ClientBase<TChannel>
类的实现:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public partial class MyProxyClass : System.ServiceModel.ClientBase<MyProxyClassPortType>, MyProxyClassPortType
{
// 60,000 lines of auto-generated code
}
System.ServiceModel.ClientBase<TChannel>
定义了以下公共属性:
public ServiceEndpoint Endpoint
{
get
{
//brevity
}
}
但是,当我创建此代理类的新实例
时var _client = new MyProxyClass();
我无法通过intellisense看到Endpoint
属性。如果我尝试通过Endpoint
访问_client.Endpoint
,编译器会给出相应的'MyProxyClass' does not contain a definition for 'Endpoint' and no extension method 'Endpoint' accepting a first argument of type 'MyProxyClass' could be found (are you missing a using directive or an assembly reference?)
但是,以下反射方法可以正常工作,并且按照我的预期返回属性:
ServiceEndpoint endpoint =
(ServiceEndpoint)typeof(ClientBase<MyProxyClassPortType>).GetProperty("Endpoint").GetValue(_client);
那么为什么我不能以正常的方式访问这个公开访问(回想GetProperty
的特定重载只搜索公共属性)属性?
答案 0 :(得分:2)
确保您的变量键入具体类而不是接口。