我正在寻找一种更有效的方法来查找从已知特定类型派生的程序集中的类型.基本上,我的应用程序中有一个插件架构,并且我们一直这样做的时间最长:
For Each t As Type In assem.GetTypes()
If t.BaseType Is pluginType Then
'Do Stuff here'
End If
Next
Run Code Online (Sandbox Code Playgroud)
一些插件有很多类型,我们开始看到这需要几秒钟.有什么办法我可以要求所有类型为BaseType为"pluginType"的类型?
编辑:我过度简化了我的代码示例.我在实际代码中使用.GetExportedTypes().但是,我很多课程被标记为公共,所以它没有太多帮助.我梳理了项目并标记了除了实际插件类之外的所有"朋友",并且它仍然需要几乎相同的时间来检查程序集.我在1.3秒内切断了100毫秒(小于10%).这只是我必须处理的最短时间吗?我也尝试了装配属性建议,它仍然没有产生太大的差异(可能再次100ms).剩下的时间是动态加载程序集必须支付的开销吗?
如何设置插入位置,只有
this.caretIndex(READ)
是否可以使用Visual Studio 2005创建和维护.Net framework 1.1应用程序?
假设我有以下4个.net程序集:
我的业务逻辑(2)使用构造函数依赖注入通过IRepository(在4中定义)调用数据访问层(3).但是,当我停止业务对象时,我需要传入一个实际的存储库.我通过在业务逻辑层中使用单例类返回当前正在使用的实现IRepository的具体对象来实现此目的.我得出的结论是,这是一件坏事,因为我的业务逻辑层现在必须引用3和4.
我想我需要一个IoC容器,但问题是我在哪里创建/放置它似乎无论我在哪里创建它(1-UI)?还需要持有对3(SQL Server数据访问)的引用.我不仅仅是解决问题而不是实现真正的脱钩吗?
我是否在UI中创建IoC容器.或者通过另一个新组件暴露它.
(我正在使用C#,.net 3.5和AutoFac)
谢谢.
我在创建一个javascript约会风格日历时遇到了一些困难.虽然它确实呈现,但我知道这将是一种更有效的方法.有没有人有他们用来创建日历的模式?我将使用jQuery,但我不想使用某人的日历插件作为a)我没有找到一个适合我需要的东西和b)我永远不会通过使用别人的工作得到更好.
现在,请记住,我的问题不是关于加载数据或重复出现或类似的事情.我基本上需要知道实际呈现日历标记的好模式.
利用TDD驱逐线程安全代码的好方法是什么?例如,假设我有一个工厂方法,它使用延迟初始化来创建一个类的一个实例,然后返回它:
private TextLineEncoder textLineEncoder;
...
public ProtocolEncoder getEncoder() throws Exception {
if(textLineEncoder == null)
textLineEncoder = new TextLineEncoder();
return textLineEncoder;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想以良好的TDD方式编写测试,迫使我使这段代码成为线程安全的.具体来说,当两个线程同时调用此方法时,我不想创建两个实例并丢弃一个实例.这很容易做到,但我怎样才能编写一个让我这样做的测试?
我在Java中问这个问题,但答案应该更广泛适用.
好吧这是一个小小的呻吟,但这也是一个问题.在Linq我可以这样做一个连接:
from c in dc.Customers join o in dc.Orders on c.custid equals o.custid ...
Run Code Online (Sandbox Code Playgroud)
一切都很好,完全可以记住,而不必回去谷歌.但是由于某些原因,左连接更加复杂:
from c in dc.Customers
join o in dc.Orders on c.custid equals o.custid
into temp from x in temp.DefaultIfEmpty() ...
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为什么Linq的设计师不能用这样的东西简单(更像sql):
来自c的dc.Customers在c.custid等于o.custid的dc.Orders中加入了o ...
干杯李
我有一个pkcs12文件.我需要使用它来使用https协议连接到网页.我遇到了一些代码,为了连接到安全的网页,我需要设置以下系统属性:
System.setProperty("javax.net.ssl.trustStore", "myTrustStore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
System.setProperty("javax.net.ssl.keyStore", "new_cert.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "newpass");
Run Code Online (Sandbox Code Playgroud)
我有p12(pkcs12)文件.我只需要一个信任库文件.
我使用以下方法提取证书:
openssl.exe pkcs12 -in c:/mykey.p12 -out c:/cert.txt -nokeys -clcerts
Run Code Online (Sandbox Code Playgroud)
现在将证书PEM文件转换为der
openssl.exe x509 -in c:/cert.txt -outform DER -out c:/CAcert.der
Run Code Online (Sandbox Code Playgroud)
现在将der文件添加到密钥库
keytool -import -file C:/Cacert.der -keystore mytruststore
Run Code Online (Sandbox Code Playgroud)
现在我有了信任库,但是当我使用它时,我收到以下错误
Exception in thread "main" java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
Run Code Online (Sandbox Code Playgroud)
更新:删除某些属性并仅设置"trustStore","trustStorePassword"和"trustStoreType"属性后,我得到以下异常
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Run Code Online (Sandbox Code Playgroud)
请帮忙.
我想弄清楚是否有办法使用Doxygen创建自定义标签.我确实找到了ALIAS配置文件选项,但这并不能完全满足我的需要.基本上在我的代码中,我希望能够编写类似的东西
/// \req Requirement #322 - blah blah
Run Code Online (Sandbox Code Playgroud)
再有Doxygen的创建列表像它的\bug,并\todo具有此定制标记线命令.Doxygen可以实现吗?
我最近一直试图将我的iPhone应用程序的搜索结果存储在NSUserDefaults集合中.我也使用它来成功保存用户注册信息,但由于某种原因,尝试存储我的自定义位置类的NSMutableArray总是返回空.
我尝试将NSMutableArray转换为NSData元素,但是我得到了相同的结果(可以在iPhone上使用NSUserDefaults保存整数数组吗?)
我试过的代码示例是:
保存:
[prefs setObject:results forKey:@"lastResults"];
[prefs synchronize];
Run Code Online (Sandbox Code Playgroud)
要么
NSData *data = [NSData dataWithBytes:&results length:sizeof(results)];
[prefs setObject:data forKey:@"lastResults"];
Run Code Online (Sandbox Code Playgroud)
要么
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:results];
[prefs setObject:data forKey:@"lastResults"];
Run Code Online (Sandbox Code Playgroud)
加载:
lastResults = (NSMutableArray *)[prefs objectForKey:@"lastResults"];
Run Code Online (Sandbox Code Playgroud)
要么
NSData *data = [prefs objectForKey:@"lastResults"];
memcpy(&lastResults, data.bytes, data.length);
Run Code Online (Sandbox Code Playgroud)
要么
NSData *data = [prefs objectForKey:@"lastResults"];
lastResults = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Run Code Online (Sandbox Code Playgroud)
按照下面的建议后,我也在我的对象中实现了NSCoder(忽略过度使用NSString的临时性):
#import "Location.h"
@implementation Location
@synthesize locationId;
@synthesize companyName;
@synthesize addressLine1;
@synthesize addressLine2;
@synthesize city;
@synthesize postcode;
@synthesize telephoneNumber;
@synthesize description;
@synthesize rating;
@synthesize priceGuide; …Run Code Online (Sandbox Code Playgroud) .net ×2
c# ×2
.net-1.1 ×1
apache-flex ×1
architecture ×1
assemblies ×1
calendar ×1
cocoa-touch ×1
doxygen ×1
flex3 ×1
java ×1
javascript ×1
jquery ×1
linq ×1
msbuild ×1
reflection ×1
ssl ×1
tdd ×1
types ×1