使用这两个方法实现中的一个或另一个的参数是什么(在Example类中)?
public interface IInterface
{
void DoIt();
}
public class Example
{
public void MethodInterface(IInterface arg)
{
arg.DoIt();
}
public void MethodGeneric<T>(T arg) where T: IInterface
{
arg.DoIt();
}
}
Run Code Online (Sandbox Code Playgroud)
PS:如果方法返回一个IInterface或T,我会选择"通用"方法,以避免在需要时在T类型中进一步转换.
我最近重构了MVVM应用程序以使用ReactiveUI。基本上,我已经更改了ViewModels中的许多代码以使用ReactiveLists,派生列表和ObservableAsPropertyHelpers。完成后,我注意到该应用程序的内存使用量从100MB增加到550MB(在完全相同的情况下,具有相同的数据和功能)。
我有来自同一个类的大量对象(约3000个),并且使用VS的诊断工具,我注意到该类的OAPH(它们有5个)占用了大量内存。最初,我假设线程问题,所以我决定尝试在测试应用程序中重现该问题。
为此,我创建了一个ViewModel:
public class ItemViewModel : ReactiveObject
{
private ObservableAsPropertyHelper<bool> myVar1;
public bool MyProperty1
{
get { return myVar1.Value; }
}
public ItemViewModel()
{
myVar1 = Observable.Return(false).ToProperty(this, x => x.MyProperty1);
}
}
Run Code Online (Sandbox Code Playgroud)
为了简便起见,我删除了另外三个完全相同的OAPH。
我的主要ViewModel如下所示:
public class MainViewModel : ReactiveObject
{
public IReactiveList<ItemViewModel> Items { get; private set; }
public MainViewModel()
{
var items = new List<ItemViewModel>();
for (int i = 0; i < 3000; i++)
{
items.Add(new ItemViewModel());
}
Items = new ReactiveList<ItemViewModel>(items);
}
} …Run Code Online (Sandbox Code Playgroud) 我的应用程序使用appsettings.json进行某些设置.如果存在appsettings.local.json,则应该覆盖appsettings.json以包含它包含的任何设置.到目前为止,没问题.
但我使用git进行版本控制.显然,我不希望其他用户拉下我的本地设置.所以我git忽略appsettings.json.
此外,解决方案中有很多项目.它们共享相同的设置.所以在解决方案级别有一个appsettings.json,所有项目都将它作为链接包含在内.
还不错,除了一件事.为了可以使用,我必须将appsettings.local.json复制到输出目录.但它不应该在版本控制中.因此,如果有人克隆解决方案新鲜,他们将没有它.那应该没问题,但事实并非如此.VS. 说"这个文件应该链接,但它到底在哪里?" 构建错误.
我该怎么处理?
如何在Blazor中为事件(OnInput)添加延迟?
例如,如果用户正在文本字段中输入,而您要等到用户完成输入。
Blazor.Templates :: 3.0.0-preview8.19405.7
码:
@page "/"
<input type="text" @bind="Data" @oninput="OnInputHandler"/>
<p>@Data</p>
@code {
public string Data { get; set; }
public void OnInputHandler(UIChangeEventArgs e)
{
Data = e.Value.ToString();
}
}
Run Code Online (Sandbox Code Playgroud) 我们什么时候可以在Asp.Net core应用程序中使用 Mapper.ProjectToover ?Mapper.Map使用ProjectToEntity Framework Core 中的方法,如果我们将其添加到语句的开头,是否会减少我从数据库查询以匹配模型的字段数量 _mapper.ProjectTo?如何减少查询字段数?
而不是使用这个
_mapper.ProjectTo<CompareVarValdto>(_compareRepo.GetCompareDetailsByid(id))
Run Code Online (Sandbox Code Playgroud)
我们可以用这个吗?
_mapper.Map<CompareVarValdto>(result)
Run Code Online (Sandbox Code Playgroud)
ComapreVarValdto.cs
public class CompareVarValdto
{
public int CompareVarValId { get; set; }
public int CURRENT_CATEGORY_ID { get; set; }
public int Current_LaunguageId { get; set; }
public int Current_compareDimId { get; set; }
public string CONTENT { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器获取方法代码片段
[Route("api/[controller]")]
[ApiController]
public class ComapareController : ControllerBase
{
private readonly ICompare _compareRepo;
private readonly IMapper _mapper;
public ComapareController(ICompare compare, IMapper …Run Code Online (Sandbox Code Playgroud) 我在测试中有以下代码:
private void LoadIncomeStatementViewModel()
{
using (var evt = new AutoResetEvent(false))
{
EventHandler handler = (sender, e) => evt.Set();
_incomeStatementViewModel.Loaded -= handler;
_incomeStatementViewModel.Loaded += handler;
_incomeStatementViewModel.LoadDataCommand.Execute(null);
evt.WaitOne();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行以下测试
[Test]
public void Test()
{
LoadIncomeStatementViewModel();
// do something
LoadIncomeStatementViewModel();
// do something
}
Run Code Online (Sandbox Code Playgroud)
第二次调用LoadIncomeStatementViewModel()时,我在EventHandler处理程序中收到"安全句柄已被处置"错误消息=(sender,e)=> evt.Set();
当方法第二次重新运行时,using语句肯定会重新初始化evt.我觉得这可能与Resharper Test Runner(Nunit 2.7)有关....
有关如何解决这个问题的任何想法?
谢谢杰里米
我是一个Web API新手在.Net 4中编写RESTFul Web Api服务.我为我正在调用的类配置了一个控制器Authentication.我遇到的问题是,当我将JSON数据发布或放入web api服务时,控制器中的处理程序被调用,但参数对象中包含NULL数据.我可以成功获取数据,但Post和Put会提供空参数对象.
我已经从客户端应用程序和Fiddler测试过,我得到了相同的结果.这是我从Fiddler发送的内容:
Action: PUT
URI: http://127.0.0.1:81/Authentication/xyz/
HTTP Version: HTTP/1.1
Request Headers:
User-Agent: Fiddler
Host: 127.0.0.1:81
Content-Type: application/json; charset=utf-8
Content-Length: 75
Request Body:
{"hashvalue":"kbVFNeBbNHmYQXXlS6d7Ag==","password":"test","username":"dan"}
Run Code Online (Sandbox Code Playgroud)
当我在身份验证控制器中的Put处理程序中设置断点时:
public void Put(string IDstring, Authentication value)
{
}
Run Code Online (Sandbox Code Playgroud)
我在观察窗口中看到以下内容:
IDstring null string
value {bbsRESTResources.Authentication} bbsRESTResources.Authentication
hashvalue null string
password null string
username null string
Run Code Online (Sandbox Code Playgroud)
我的身份验证类如下所示:
namespace bbsRESTResources
{
public class Authentication
{
public string username;
public string password;
public string hashvalue;
}
}
Run Code Online (Sandbox Code Playgroud)
我的路线看起来像这样:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}", …Run Code Online (Sandbox Code Playgroud) 我在 Web API 中序列化继承的对象时遇到问题。
[DataContract]
public class Item{
[DataMember]
public int ID{get; set;}
[DataMember]
public string Name{get; set;} }
[DataContract]
public class SitecoreItem : Item{
[DataMember]
public DbType SitecoreInstance{get; set;} }
Run Code Online (Sandbox Code Playgroud)
我试图从 WebAPI 返回上述 SitecoreItem,但它会出现序列化错误。我究竟做错了什么?
我试图将项目水平放置在ItemControl中,同时使它们填充父控件.
这是我的XAMl:
<ItemsControl ItemsSource="{Binding AnnualWeatherViewModels}" Visibility="{Binding IsAnnualWeatherViewModels, Converter={StaticResource VisibilityConverter}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<V:AerosolSimpleWeatherCharacteristicsView DataContext="{Binding}"></V:AerosolSimpleWeatherCharacteristicsView>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
我尝试过的两种变体ItemsControl.ItemsPanel是:
<StackPanel Orientation="Horizontal"></StackPanel>
Run Code Online (Sandbox Code Playgroud)
和:
<DockPanel LastChildFill="False"></DockPanel>
Run Code Online (Sandbox Code Playgroud)
然而,两者都没有达到预期的结果,StackPanel压缩所有项目,并且DockPanel将填充父控件的空间,其中大部分空间专用于最后一项,或者不填充父空间,具体取决于值LastChildFill.
那么如何布置ItemsControl水平项目并让它们填充父控件的空间?
我最终创建了这个自定义控件作为答案中的sugested:
public partial class StretchingPanel : Grid
{
public static readonly DependencyProperty OrientationProperty =
DependencyProperty.Register("Orientation", typeof(Orientation), typeof(StretchingPanel), new UIPropertyMetadata(System.Windows.Controls.Orientation.Horizontal));
public static readonly DependencyProperty FillFirstItemProperty =
DependencyProperty.Register("FillFirstItem", typeof(bool), typeof(StretchingPanel), new UIPropertyMetadata(true));
public static readonly DependencyProperty FillFirstItemFactorProperty =
DependencyProperty.Register("FillFirstItemFactor", typeof(double), typeof(StretchingPanel), new …Run Code Online (Sandbox Code Playgroud) 在我的C#中更改加载的html,并需要将html文档作为纯文本.但每当我将新节点附加到文档节点之一时,即使成功添加新节点,根节点的内部html也不会更改.调试后我注意到只有新节点的父节点的InnerHtml属性发生了变化,例如:
HtmlDocument doc;
HtmlNode root doc.DocumentNode;
HtmlNode node2 = root.ChildNodes[1];
HtmlNode newNode = new HtmlNode(...);
node2.Append(newNode);
Run Code Online (Sandbox Code Playgroud)
有:
<root>
<node1>
</node1>
<node2>
<node3>
<node3>
<newNode>
</newNode>
</node2>
</root>
Run Code Online (Sandbox Code Playgroud)
node2.InnerHtml将是
<node3>
<node3>
<newNode>
</newNode>
Run Code Online (Sandbox Code Playgroud)
但是root.InnerHtml是
<root>
<node1>
</node1>
<node2>
<node3>
<node3>
</node2>
</root>
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?(我知道我可以手动更新每个文档的节点内部html,但常见...)
c# ×10
.net ×1
appsettings ×1
asp.net-core ×1
automapper ×1
blazor ×1
debounce ×1
generics ×1
git ×1
handle ×1
html ×1
local-files ×1
mvvm ×1
nodes ×1
reactiveui ×1
throttling ×1
tree ×1
wpf ×1
xaml ×1