假设我的 API 返回以下people数组:
var p1 = new Person("Alice");
var p2 = new Person("Bob");
p1.Sibling = p2;
p2.Sibling = p1;
var people = new[] { p1, p2 };
Run Code Online (Sandbox Code Playgroud)
为避免循环引用,它输出以下 JSON:
[
{
"$id":"1",
"Name":"Alice",
"Sibling":{
"$id":"2",
"Name":"Bob",
"Sibling":{
"$ref":"1"
}
}
},
{
"$ref":"2"
}
]
Run Code Online (Sandbox Code Playgroud)
但是,Angular 不会处理它。相反,我最终得到一个数组,其中第二个对象只是一个带有$ref属性的文字对象。
谷歌搜索,我发现 Angular 不支持这一点,但我想一定有办法让它工作。
更新:
基本上,这可以归结为"如何强制类库在Application API上加载Web API站点,这样我就可以反思它们一次,并确保我得到某个类的所有实现.或者,如果没有好办法这样做,允许该库中的类自我注册的最佳方法是什么?
原始问题:
我正在尝试在我的Web API中注册在应用程序启动时实现某个接口的所有类,并将它们放在一个列表中,这样我就可以在以后找到它们,而不会在每次调用时反映组件.
看起来相当简单,虽然我以前从未这样做过.所以经过一些谷歌搜索和阅读其他一些Stack Overflow问题后,我创建了一个容器类并提出了一个方法来注册所有具体的实现.简化的解决方案如下所示:
public static void RegisterAllBots()
{
var type = typeof(IRobot);
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(type.IsAssignableFrom);
foreach (var t in types)
{
TypeRepo.Add(t.Name.ToLower(), t);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将RegisterAllBots()放在Global.asax的Application_Start()中.
问题是,有时(但不总是),如果我开始调试解决方案"冷",它找不到实现,只找到接口本身.如果我在运行之前转到Build - > Rebuild Solution,它会找到它们.所以我假设这是Visual Studio启动WebHost项目而不重建其他类库项目的问题.
所以我在这里有几个问题.
我使用新的(非XAML)构建过程使用Git repos运行TFS 2015.当新标记被推送到Git仓库时,是否有某种方法可以触发特定的构建?过滤器似乎只接受分支名称.
我们有一个用于加密的辅助类,老实说,它可能是多年前从 Stack Overflow 复制的。
目前,我们正尝试将部分代码移植到 .NET Core,但我们发现它不起作用,因为 .NET Core 实现RijndaelManaged不支持 256 块大小。从我读到的内容来看,BouncyCastle 似乎仍然应该支持它,但我无法让它工作。“未加密”的文本只是一堆乱码。我确定我做错了什么,但对于我的生活,我无法弄清楚这一点。
这是该类的原始 .Net Framework 版本:
internal static class StringEncryptor
{
private const int Keysize = 256;
private const int _iterations = 1000;
private const int _hashLenth = 20;
public static string Encrypt(string plainText, string superSecretPassPhrase)
{
// Salt and IV is randomly generated each time, but is preprended to encrypted cipher text
// so that the same Salt and IV values can be used when decrypting. …Run Code Online (Sandbox Code Playgroud) 在2008服务器上安装TFS 2015的过程中,它提示我需要安装更新版本的Powershell。这样做需要重新启动,现在我不知道如何返回升级向导。
我想在一组文件中看到包含Windows风格crlf而不是Unix风格的文件的所有实例lf.这是我到目前为止所拥有的:
sls -Path src/*.cs -Pattern "`r`n" | group Path | select name
Run Code Online (Sandbox Code Playgroud)
如果我搜索任何普通文本,但它找不到回车符,这是有效的,即使(根据我能在网上找到的所有内容),这是适当的Powershell转义序列,用于回车和换行.因为记录\r\n也不起作用.