这是克莱
这适用于C#
dynamic c = new ClayFactory();
var plant = c.Plant(new {LatinName = "test"});
Console.WriteLine(plant.LatinName);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
但这在VB.Net中不起作用
Dim c As Object = New ClayFactory
Dim plant = c.Plant(New With {.LatinName = "test"})
Console.WriteLine(plant.LatinName)
Console.ReadLine()
Run Code Online (Sandbox Code Playgroud)
我在VB.Net中收到此错误消息:
> Cannot close over byref parameter
> '$arg1' referenced in lambda ''
Run Code Online (Sandbox Code Playgroud)
如果我能解决它,我不是100%肯定如何解决这个问题.我猜测匿名类型的VB.Net实现略有不同.
我在这一行得到错误:
Dim plant = c.Plant(New With {.LatinName = "test"})
Run Code Online (Sandbox Code Playgroud)
如果有人能向我解释,我将不胜感激.
IL似乎不同了.
对于VB,私有字段Latinname是这样的:
.field private initonly !T0 $LatinName
Run Code Online (Sandbox Code Playgroud)
对于C#,它是:
.field private initonly !'<LatinName>j__TPar' '<LatinName>i__Field'
.custom instance void …
Run Code Online (Sandbox Code Playgroud) 所以我有以下设置:
VB6应用程序使用一个小型接口DLL与我们的新基础设施(服务等)进行通信,并且几乎不能在功能上进行更改.我们选择使用带有这样的绑定的WCF
<system.serviceModel>
<client>
<endpoint address="net.tcp://localhost:8001/HostCommunicator" binding="netTcpBinding" bindingConfiguration="NETTcpBinding" contract="IHostCommunicationContract"/>
</client>
<bindings>
<netTcpBinding>
<binding name="NETTcpBinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" receiveTimeout="00:10:00" sendTimeout="00:10:00">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
<startup>
Run Code Online (Sandbox Code Playgroud)
沟通.
对于单个请求,这种方法可以正常工作,但VB6应用程序的一种模式是一种批处理模式,它为每个处理的文件发送单独的请求.每秒大约有1-4个请求.
这可以正常工作,直到完成许多请求.在我当前的机器和软件版本上,这是50个请求.如果我启动VB6应用程序,它会再次发出50个请求.在限制之后,应用程序将以99%的CPU使用率挂起.
我们正在使用双工渠道合同.
我有一个MustInherit
类,里面有一些MustOveride
方法.当我继承该类的形式时,我会自动获取MustOveride
方法或属性.
我的问题是,我希望能够继承一个类,获取我的MustOveride
函数和方法,但之后已经有了一些代码.我曾经见过一个.net类,当我从该类继承时,我得到了方法,并在其中添加了一些注释.
有人知道我的意思吗?(这有点难以描述;-))
我想在我的消息传递应用程序中添加跟踪功能.我使用的每条消息都有一个唯一的标识符,该标识符被转发到后续消息(由原始消息产生的消息).
为了能够跨多个进程和可能的服务器监视消息的生命周期行为,我想使用log4net远程处理appender.
我可以使用一个记录器并在消息本身中编码消息ID:
Logger: "MessageLivetime"
Message: "SomeId | message text")
但是我认为如果我为每条消息创建一个记录器会很聪明:
Logger: "MessageLivetime.SomeId"
Message: "message text")
但是由于LogManager
该类没有删除记录器的方法,我担心会遇到问题,因为会创建数千个废弃的记录器.
如果这种方法可行,那么对log4net更有洞察力的人能给我一个暗示吗?
我已经找到了上下文属性.他们是更好的选择吗?我如何写入事件上下文?