我有一个非常简单的 .NET MAUI 应用程序(不是 Blazor 应用程序)。我已经安装了 Seriolog 和 Serilog.Extensions.Logging (这样我就可以使用 AppCenter)。我的启动代码中有以下内容来初始化 Serilog
public static MauiApp CreateMauiApp()
{
// set up logging
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
path = Path.Combine(path, "debugcode.txt");
Log.Logger = new LoggerConfiguration()
//.MinimumLevel.Debug()
.WriteTo.File(path)
.WriteTo.AppCenterCrashes(restrictedToMinimumLevel: LogEventLevel.Information)
.WriteTo.Console()
.CreateLogger();
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
})
.Logging.AddSerilog(Log.Logger);
return builder.Build();
}
Run Code Online (Sandbox Code Playgroud)
这编译没有问题。我已将日志记录代码添加到 main.xaml.cs 中(该代码只是 VisualStudio 附带的默认 .NET MAUI 测试应用程序)。最小调试行已被注释掉,但如果不注释掉也没有什么区别。
protected override void OnDisappearing()
{
base.OnDisappearing();
Log.CloseAndFlush();
}
void OnCounterClicked(object sender, EventArgs e)
{
count++; …Run Code Online (Sandbox Code Playgroud) 我已经将一个大型 VB6 移植到 VB.NET 项目,虽然它可以正确编译,但我不得不注释掉大多数事件处理程序,以便解决没有用于 winform 对象的数组集合,因此将各种对象放在分别在集合数组中放入一个 List 对象。
例如,在 VB6 中,您可以拥有一组按钮。在我的代码中,我有
Dim WithEvents cmdButtons As New List(Of Button)
Run Code Online (Sandbox Code Playgroud)
(在 Load 事件中,List 被传播)
显然,您不能在容器上触发事件。有没有办法从容器的内容(将有不同的名称)触发事件?
在按钮创建代码中,事件名称在那里,但据我所知,处理程序不会拦截,因为代码的句柄部分不存在(注释掉)。
我有可能是一个非常大的Dictionary对象列表,我需要从键中找到一个特定的值.我当然可以这样做
foreach(Dictionary<long, string> t in Foo)
{
if (t.TryGetValue(key, out name))
break;
}
Run Code Online (Sandbox Code Playgroud)
这将很高兴地遍历Foo,直到它找到密钥或foreach结束.
为了加快速度,我宁愿使用少量的LINQ.如果这是一个普通的列表,我会没事的,但由于这是一个Dictionary对象列表,我不太清楚它是如何完成的.
帮助或建议表示赞赏.
我有一个在Android和WinPhone 8上正常运行的项目.当我尝试在iOS上运行时,我收到以下错误
Microsoft.Practices.ServiceLocation.ActivationException:无法注册:在x中找不到公共构造函数
x无论SimpleIoc.Default.Register<T, TU>();流量首先出现在何处.我已经移动了代码(如其他地方所建议的那样)以确保所有特定于平台的SimpleIoc调用都在其中ViewModelLocator.
我已经在抱怨错误的类中添加了公共默认ctors(我已经将其设置PreferredConstructor为原始版本,而不是新添加的公共ctor).
我有一种感觉,这个错误是误报(其他东西是失败的,但指着那个代码).
通过构建服务器使用Xam.iOS(代码来自VS2015).Xcode正在运行8.3仿真器(可能需要更新以允许8.4测试)
我正在Rust中编写一些代码(主要是作为POC)。该代码采用2D数组,并将其传递给第二个函数以执行一些矩阵数学运算(我知道有一个标准库可以执行此操作,但我想习惯于工作原理)。
问题是分配给2D阵列会引起问题。
我的代码看起来像这样
fn main()
{
// first create a couple of arrays - these will be used
// for the vectors
let line1: [i32; 4] = [4, 2, 3, 3];
let line2: [i32; 4] = [3, 4, 5, 7];
let line3: [i32; 4] = [2, 9, 6, 2];
let line4: [i32; 4] = [5, 7, 2, 4];
// create two holding arrays and assign
let array_one = [line1, line3, line4, line2];
let array_two = [line2, line1, line3, line4];
// …Run Code Online (Sandbox Code Playgroud) 我有一个像这样定义的Rust枚举
enum MyFirstEnum {
TupleType(f32, i8, String),
StuctType {varone: i32, vartwo: f64},
NewTypeTuple(i32),
SomeVarName
}
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
let mfe: MyFirstEnum = MyFirstEnum::TupleType(3.14, 1, "Hello".to_string());
Run Code Online (Sandbox Code Playgroud)
我正在关注Rust文档,这看起来很好.我不需要在枚举中定义所有内容,但是如何访问枚举元组中的mid元素呢?
mfe.TupleType.1并且mfe.1当我将它们添加到a时不起作用println!
我知道Rust提供了进行模式匹配以获取值的工具,但是如果我更改代码以定义枚举中的其他变体,输出特定变体的代码很快就会变得混乱.
是否有一种简单的方法可以在枚举中输出元组(或任何其他变体)的变体?
我正在更新一些使用智能指针和其他内存管理代码的旧 Rust 代码,这些代码在版本 1 发布之前已被弃用和删除。
是否可以直接替代旧的智能指针之类的东西,还是使用 Box 之类的东西来分配内存更好?
我有这样的代码(这非常简化!)
struct my_rectangle {
x: i32,
y: i32,
length: i32,
breadth: i32,
}
fn allocate_rect() {
let x: ~my_rectangle = ~my_rectangle{x: 5, y: 5, length: 25, breadth:15};
}
Run Code Online (Sandbox Code Playgroud)
和
fn firstMethod() {
let memblock: @int = @256;
secondMethod(memblock);
println!(“%d”, *memblock);
}
fn secondMethod(memblock: @int) {
let secMemblock: @int = memblock;
}
Run Code Online (Sandbox Code Playgroud)
这在 1.0 之前可以正常工作,但现在无法构建。
在大多数情况下,我已经很快将代码从标准.NET代码移动到使用RestSharp.这对于GET进程来说已经足够简单,但我对POST进程感到难过
考虑以下
var request = System.Net.WebRequest.Create("https://mytestserver.com/api/usr") as System.Net.HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json;version=1";
request.Headers.Add("Content-Type", "application/json;version=1");
request.Headers.Add("Accepts", "application/json;version=1");
request.Headers.Add("Authorize", "key {key}");
using (var writer = new System.IO.StreamWriter(request.GetRequestStream())) {
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes("{\n \"firstName\": \"Dan\",\n \"lastName\": \"Eccles\",\n \"preferredNumber\": 1,\n \"email\" : \"testuser@example.com\",\n \"password\": \"you cant get the wood\"\n}");
request.ContentLength = byteArray.Length;
writer.Write(byteArray);
writer.Close();
}
string responseContent;
using (var response = request.GetResponse() as System.Net.HttpWebResponse) {
using (var reader = new System.IO.StreamReader(response.GetResponseStream())) {
responseContent = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)
除了序列化代码之外,这是相当直接的.有什么特别的方法可以为RestSharp做这个吗?我试过创建一个对象并使用
var json = JsonConvert.SerializeObject(user);
restRequest.RequestFormat …Run Code Online (Sandbox Code Playgroud) 我有一个简单的类,包含4个这样的双重属性
public MyClass
{
public MyClass(double all = 0)
{
Top = Bottom = Left = Right = all;
}
public MyClass(double lr = 0, double tb = 0)
{
Top = Bottom = tb;
Left = Right = lr;
}
public MyClass(double l = 0, double r = 0, double t = 0, double b = 0)
{
Top = t;Bottom = b;Left = l;Right = r;
}
public double Top {get; private set;}
public double Bottom {get; private …Run Code Online (Sandbox Code Playgroud) 我对Key和Value的列表字典有疑问.
我的字典就是这样设置的
Dictionary<List<string>,List<double>> f = new Dictionary<List<string>,List<double>>();
Run Code Online (Sandbox Code Playgroud)
(这是出于非常具体的原因).
我的问题是如何将两个列表放入他们自己的列表中.我尝试了以下内容
List<string> s = new List<string>(f.Keys);
List<string> s = f.Select(kvp=>kvp.Keys).ToList()
List<string> s = f.Select(kvp=>kvp.Keys);
List<string> s = f.Keys;
Run Code Online (Sandbox Code Playgroud)
以及使用IEnumerable的变体.无论我做什么,我似乎无法检索键(或使用f.Values,值).
任何帮助在这里将不胜感激.
我有这个标准的 LINQ
var sidEvents = (from f in AppDelegate.Self.Subscription.Fred
from s in f.Sid
from e in s.Eve
where e.date >= oneWeek
select new {Title = e.type, Data = e.data, Date = e.date}).ToList();
Run Code Online (Sandbox Code Playgroud)
我已经改变了一些东西,现在我得到了一个 Eve 对象的列表,它的条件是这样的
var sidEvents = AppDelegate.Self.DBManager.GetListOfEvents("type", "EatingOut").Where(t => t.date >= oneWeek).ToList();
Run Code Online (Sandbox Code Playgroud)
有没有办法可以扩展这个 LINQ 查询以包含原始 LINQ 查询中的 select new {...}?
这跟其他骗局不太一样!
我有一个Web服务,它根据传入的令牌抓取数据
$query = "SELECT * FROM Journey WHERE Token='{$token}';";
$result = mysql_query($query,$link) or die('Errant query: '.$query);
$posts = array();
$dto = new Journey();
$dta = new Dta();
if(mysql_num_rows($result) > 0) {
while($post = mysql_fetch_assoc($result)) {
$posts[] = $post;
$posts = array_shift($posts);
Run Code Online (Sandbox Code Playgroud)
当我运行服务并传入一个有效的令牌时,我得到致命的错误 $posts[] = $post
从我所看到的(并已阅读),这看起来是正确的方式(事实上,我在其他Web服务中有它,它在那里工作)
使用PHP 5.6.3