是否可以IServiceProvider在WPF中添加自定义以用于标记扩展?
我没有找到任何相关的文档或示例.
鉴于以下内容:
[<DataContract>]
type TweetUser = {
[<field:DataMember(Name="followers_count")>] Followers:int
[<field:DataMember(Name="screen_name")>] Name:string
[<field:DataMember(Name="id_str")>] Id:int
[<field:DataMember(Name="location")>] Location:string}
[<DataContract>]
type Tweet = {
[<field:DataMember(Name="id_str")>] Id:string
[<field:DataMember(Name="text")>] Text:string
[<field:DataMember(Name="retweeted")>] IsRetweeted:bool
[<field:DataMember(Name="created_at")>] DateStr:string
[<field:DataMember(Name="user", IsRequired=false)>] User:TweetUser
[<field:DataMember(Name="sender", IsRequired=false)>] Sender:TweetUser
[<field:DataMember(Name="source")>] Source:string}
Run Code Online (Sandbox Code Playgroud)
反序列化DataContractJsonSerializer(typeof<Tweet[]>)将导致User或Sender字段为空(至少是调试器告诉我的那个).
如果我尝试写下面的内容:
let name = if tweet.User <> null
then tweet.User.Name
else tweet.Sender.Name
Run Code Online (Sandbox Code Playgroud)
编译器发出错误:"类型'TweetUser'没有'null'作为正确的值"
在这种情况下如何测试空值?
使用D3我想创建一个如下所示的X轴:

我已经弄清楚如何做轴和刻度,但不是使用以下标签:
var svgWidth = 500;
var svgHeight = 500;
var svgAxisPadding = 20;
var xScale = d3.scale.log()
.domain([Math.pow(10, 5), Math.pow(10, 7)])
.range([svgAxisPadding, svgWidth - svgAxisPadding]);
var xAxis = d3.svg.axis()
.scale(xScale)
.orient('bottom')
.ticks(0, "e");
var svg = d3.select('#diagram')
.append('svg')
.attr('width', svgWidth)
.attr('height', svgHeight);
svg.append('g')
.attr("class", "axis")
.call(xAxis);
Run Code Online (Sandbox Code Playgroud)
这里有一个完整代码的jsFiddle.
任何人都有一些代码来重新排序ng-repeat使用拖放不需要jQuery?(仅限angularjs依赖)
我有时候发现WPF难以理解.给定以下XAML,如何添加触发器以动画(向下滑动,淡入)添加到ObservableCollection时间轴的新项目.我已经看到了列表框的各种示例,但没有项目控制.
<Grid>
<ScrollViewer>
<ItemsControl Name="TimelineItem"
ItemsSource="{Binding Timeline}"
Style="{StaticResource TimelineStyle}"
ItemContainerStyle="{StaticResource TweetItemStyle}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid VerticalAlignment="Top"
HorizontalAlignment="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Style="{StaticResource TweetImageColumnStyle}" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Rectangle Grid.Column="0"
Style="{StaticResource TweetImageStyle}">
<Rectangle.Fill>
<ImageBrush ImageSource="{Binding ProfileImageUrl}" />
</Rectangle.Fill>
</Rectangle>
<StackPanel Grid.Column="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Style="{StaticResource TweetNameStyle}"
Text="{Binding Name}" />
<TextBlock Grid.Column="1"
Style="{StaticResource TweetTimeStyle}"
Text="{Binding TimeAgo}" />
</Grid>
<Controls:TextBlockMarkup Grid.Row="1"
Grid.Column="1"
Markup="{Binding MarkupText}"
Style="{StaticResource TweetStyle}" />
</StackPanel> …Run Code Online (Sandbox Code Playgroud) 我经常使用扩展方法来检查方法参数
void MyMethod(string? test)
{
Require.NotNull(test, nameof(test));
// Same as
// if (test == null) throw new ArgumentNullExeception(nameof(test))
...
}
Run Code Online (Sandbox Code Playgroud)
nullables但是,当启用 C# 8时,编译器认为我在使用扩展方法时没有检查 null 参数。
有没有办法将扩展方法识别Require.NotNull为nullable检查器?
我正在学习F#,发现我写的是有用的,但我并不完全理解.这是一个例子
let processArgs args =
match args with
| null
| [||] -> [fun() -> getCredentials(); home 20; mentions 20; messages 20]
| [|"-h"|]
| [|"-?"|] -> [showHelp]
| [|"-reset"|] -> [clearAllSettings]
| _ -> [fun() -> printfn "%s" (String.Join(" ", args))]
[<EntryPoint>]
let main (args:string[]) =
try
let actions = processArgs args
List.iter (fun action -> action()) actions
0
finally
Console.ResetColor()
Console.CursorVisible <- true
Run Code Online (Sandbox Code Playgroud)
getCredentials,home,mentions,messages,showHelp和clearAllSettings方法都是简单的函数,可以满足您的期望.(是的,这是一个Twitter客户端,是不是新的'Hello World'演示?)
这条线:
[fun() -> getCredentials(); home 20; mentions 20; messages 20]
Run Code Online (Sandbox Code Playgroud)
像我想的那样工作.它调用getCredentials,然后调用home,然后提及消息
从我的角度来看,分号就像一个语句分隔符.我以前没见过这个.那是怎么回事?
是否有一种更惯用的写作方式(换句话说,一个经验丰富的F#程序员在他/她看到这个时会笑在地板上)? …
使用实体框架6使用模型首次设置
运行应用程序,创建数据库 活泉!
删除App_Data文件夹中的.mdf/.ldf.
运行应用程序,数据库连接错误
为什么不重新创建数据库?
PS尝试过如何为Entity Framework重新创建数据库?但它不起作用.
那么我如何说服EF重新创建数据库(为什么这会很难?)?
我一直在尝试在我的编程中采用一种函数式语言。我使用 C# 并严重依赖 LINQ 和其他函数式构造。目前我专注于榆树。
继续困扰我的一件事是函数中缺少括号。数学表达式使用它们:
f(z) = ln(z) + 1
Run Code Online (Sandbox Code Playgroud)
然而,在许多函数式语言中,这被写为:
f z = ln z + 1
Run Code Online (Sandbox Code Playgroud)
这只是一种风格,还是这里有更深层次的东西?
鉴于:
public partial class Weather
{
private readonly DispatcherTimer _timer = new DispatcherTimer();
private readonly IWeatherDataProvider _weatherDataProvider;
public Weather(IWeatherDataProvider weatherDataProvider)
{
InitializeComponent();
_weatherDataProvider = weatherDataProvider;
Loaded += async (sender, args) =>
{
_timer.Interval = new TimeSpan(0, 15, 0);
_timer.Tick += async (o, eventArgs) => DataContext = await UpdateWeather();
_timer.Start();
DataContext = await UpdateWeather();
};
Unloaded += (sender, args) => _timer.Stop();
}
private async Task<WeatherData> UpdateWeather()
{
var weatherData = await _weatherDataProvider.GetWeather();
return weatherData;
}
}
Run Code Online (Sandbox Code Playgroud)
我很困惑如何转换这个使用Reactive Extensions.我开始时:
var weather = …Run Code Online (Sandbox Code Playgroud)