次のようなWCFホストがあります。
[ServiceContract]
public interface IMountToOs
{
[OperationContract]
char GetMountDriveLetter();
[OperationContract]
MyTestClass MyTest();
}
public class MyTestClass
{
public string A { get; set; }
public string B { get; set; }
}
クライアント
private IMountToOs _proxy;
public IMountToOs Proxy
{
get
{
if (_proxy == null)
{
NetTcpBinding binding = new NetTcpBinding();
binding.MaxReceivedMessageSize = 2147483647;
binding.OpenTimeout = TimeSpan.FromMilliseconds(50000);
EndpointAddress address = new EndpointAddress("net.tcp://localhost:1234/MountToOsHost");
//_proxy = new MountToOsClient(binding, address);
ChannelFactory<IMountToOs> factory = new ChannelFactory<IMountToOs>(binding);
_proxy = factory.CreateChannel(address);
}
return _proxy;
}
}
アクセスできるうちに
MessageBox.Show("Okay - " + Proxy.GetMountDriveLetter());
このメソッドを呼び出すことはできません:
MessageBox.Show("Okay - " + Proxy.MyTest().A);
完全な拡張機能が機能していません。ただし、拡張機能で使用している間のみ。拡張子の1行目にメッセージボックスを挿入してもヒットしません。どうしてか分かりません。事前チェックを実行して、拒否されたカスタムクラスの呼び出しを見つけるようです... winformなどを使用すれば問題ありません。
.net 3.5
興味深いのは、ブレークポイントとホスト側のメッセージがあることです。したがって、メソッドが呼び出されていないことがわかります
今すぐ更新して、拡張機能の Load メソッドで wcf-call を移動し、例外を取得しました。
System.MissingMethodException: メソッドが見つかりません: "Contracts.Interfaces.MyTestClass Contracts.Interfaces.IMountToOs.MyTest()".
私のwinformテストとこの拡張機能は同じインターフェースを使用するため、メソッドは両方から認識されるはずです。契約がないか、時代遅れです