是否可以使用支持项目中任何模型的通用Web API?
class BaseApiController<T> :ApiController
{
private IRepository<T> _repository;
// inject repository
public virtual IEnumerable<T> GetAll()
{
return _repository.GetAll();
}
public virtual T Get(int id)
{
return _repositry.Get(id);
}
public virtual void Post(T item)
{
_repository.Save(item);
}
// etc...
}
class FooApiController : BaseApiController<Foo>
{
//..
}
class BarApiController : BaseApiController<Bar>
{
//..
}
Run Code Online (Sandbox Code Playgroud)
这会是一个好方法吗?
毕竟,我只是重复CRUD方法?我可以使用这个基类为我做这项工作吗?
这个可以吗?你会这样做吗?任何更好的想法?
未处理的异常:System.IO.FileLoadException:无法加载文件或组合' TheLibrary,Version = 1.2.3905.36284,Culture = neutral,PublicKeyToken = 14 04827c3a8f2601'或其依赖项之一.应用程序无法启动,因为它的并排配置不正确.有关详细信息,请参阅应用程序事件日志.(来自HRESULT的异常:0x800736B1)文件名:' TheLibrary,Version = 1.2.3905.36284,Culture = neutral,PublicKe yToken = 1404827c3a8f2601'---> System.Runtime.InteropServices.COMException(0x800 736B1):应用程序无法启动因为它的并排配置是不正确的.有关详细信息,请参阅应用程序事件日志.(来自HRESULT的例外:0x800736B1)
当我查看事件日志时,我收到此错误.
"C:\ project\Debug\MyLibrary.dll"的激活上下文生成失败.无法找到依赖程序集Microsoft.VC90.DebugCRT,processorArchitecture ="x86",publicKeyToken ="1fc8b3b9a1e18e3b",type ="win32",version ="9.0.21022.8".请使用sxstrace.exe进行详细诊断.
我使用sxstrace来记录错误,结果如下:
=================开始激活上下文生成.输入参数:Flags = 0 ProcessorArchitecture = x86 CultureFallBacks = zh-CN; zh_cn ManifestPath = C:\ Windows\system32\cmd.exe AssemblyDirectory = C:\ Windows\system32 \
信息:解析清单文件C:\ Windows\system32\cmd.exe.INFO:Manifest Definition Identity是Microsoft.Windows.FileSystem.CMD,processorArchitecture ="x86",type ="win32",version ="5.1.0.0".信息:激活上下文生成成功.结束激活上下文生成.
=================开始激活上下文生成.输入参数:Flags = 0 ProcessorArchitecture = x86 CultureFallBacks = en-US; zh ManifestPath = C:\ Debug\TheLibrary.dll AssemblyDirectory = C:\ Debug \
信息:解析清单文件C:\ …
就我在一本简单的书中所读到的,代码契约可能会降低运行时性能.
是否可以在生产中禁用代码合同?
循环缓冲区有哪些用途?
使用循环缓冲区有什么好处?
它是双链表的替代品吗?
Java Docs说,putIfAbsent相当于
if (!map.containsKey(key))
return map.put(key, value);
else
return map.get(key);
Run Code Online (Sandbox Code Playgroud)
因此,如果密钥存在于地图中,则不会更新其值.它是否正确?
如果我想根据某些条件更新密钥值怎么办?说过期时间等
这是否是添加和更新缓存的更好的方法?
public void AddToCache(T key, V value)
{
V local = _cache.putifabsent(key, value);
if(local.equals(value) && local.IsExpired() == false){
return;
}
// this is for updating the cache with a new value
_cache.put(key, value);
}
Run Code Online (Sandbox Code Playgroud) 在Trace.Write("");开发MVC或WCF应用程序时,您在哪里看到日志?什么是正确的地方?
我有一个ObjA和ObjB列表如下:
List<ObjA> List1;
List<ObjB> List2;
Run Code Online (Sandbox Code Playgroud)
ObjA和ObjB都有一个共同的字段,即User,我希望基于User.Id与它们相交.
class ObjA
{
User user;
.... other properties
}
class ObjB
{
User user;
.... other properties
}
class User
{
int Id;
.... other props
}
Run Code Online (Sandbox Code Playgroud)
如何在Linq上将这两个列表与User.Id相交?
因此,我只想要用户列表.
有一个包含1000个小文本文件的文件夹.我的目标是解析和处理所有这些文件,同时将更多文件填充到文件夹中.我的目的是多线程这个操作,因为单线程原型花了六分钟来处理1000个文件.
我喜欢读写器线程如下.当读者线程正在读取文件时,我想让编写器线程来处理它们.一旦阅读器开始阅读文件,我想将其标记为正在处理,例如通过重命名.读完后,将其重命名为已完成.
我如何处理这样的多线程应用程序?
使用分布式哈希表或队列更好吗?
我使用哪种数据结构可以避免锁定?
这个方案有更好的方法吗?
我有一个缓存类,其中包含一个volatile HashMap<T>存储缓存项.
我很好奇,这将是改变的后果volatile HashMap来ConcurrentHashMap?
我会获得性能提升吗?此缓存是只读缓存.
什么是最好的选择?只是HashMap?缓存正在一段时间内填充.
c# ×7
.net ×4
caching ×2
concurrency ×2
hashmap ×2
java ×2
algorithm ×1
architecture ×1
dependencies ×1
generics ×1
graph ×1
linq ×1
production ×1
trace ×1
wcf ×1