namespace coordinates
{
class Example
{
public string Name;
public Action MainFunc;
public Example(string name, Action callback)
{
Name = name;
MainFunc = callback;
}
public void Init()
{
MainFunc?.Invoke();
}
}
}
var r = new Example("Example name", () => Console.WriteLine("Example MainFunc"));
{
"greeting": "Welcome to quicktype!",
"instructions": [
"Type or paste JSON here",
"Or choose a sample above",
"quicktype will generate code in your",
"chosen language to parse the sample data"
]
}
namespace QuickType
{
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using J = Newtonsoft.Json.JsonPropertyAttribute;
using R = Newtonsoft.Json.Required;
using N = Newtonsoft.Json.NullValueHandling;
public partial class Welcome
{
[J("greeting")] public string Greeting { get; set; }
[J("instructions")] public string[] Instructions { get; set; }
}
public partial class Welcome
{
public static Welcome FromJson(string json) => JsonConvert.DeserializeObject<Welcome>(json, QuickType.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this Welcome self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters = {
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
},
};
}
}
using Newtonsoft.Json;
/// <summary>
/// Конвертер JSON
/// </summary>
public static class Converter
{
/// <summary>
/// Настройки конвертации JSON
/// </summary>
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore, // Пропускаем аттрибуты
DateParseHandling = DateParseHandling.None, // Выключаем парсинг дат
NullValueHandling = NullValueHandling.Ignore // Пропускаем пустые значения
// (API-вызов при создании запроса
// сам заполняет нужные поля)
};
}
/// <summary>
/// Абстрактный класс - сетевое сообщение: парсинг и
/// генерация JSON из экземпляров наследуемого класса
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class APIMessage<T>
{
/// <summary>
/// Конвертация в JSON
/// </summary>
/// <returns></returns>
public string ToJson()
{
return JsonConvert.SerializeObject(this, Converter.Settings);
}
/// <summary>
/// Парсинг JSON в указанный тип
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static T FromJson(string json)
{
try
{
return JsonConvert.DeserializeObject<T>(json, Converter.Settings);
}
catch (Exception e)
{
throw new ServerConnectionException(
"Server response parse error!\nResponse type: <" + typeof(T).FullName
+ ">\nError: " + e.Message
);
}
}
}
public class Request : APIMessage<Request>
{
<описание JSON свойств>
}
public static void Main(string[] args)
{
var cube = new Formula<Func<int, int>>( (x) => x * x, "(x) => x * x" );
Console.WriteLine(cube.Exec(3));
Console.WriteLine(cube.Text);
}
public class Formula<T>
{
public readonly T Exec;
public readonly string Text;
public Formula(T action, string text)
{
Exec = action;
Text = text;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Gameplay : MonoBehaviour {
string Word;
public GameObject PrefabCharCell;
public GameObject tempCell;
public Transform GridCellPos;
void SomeMethod(GameObject tempCell){
}
void Start ()
{
Word = "Meet";
foreach (char ch in Word.ToUpper().ToCharArray())
{
tempCell = Instantiate(PrefabCharCell);
tempCell.transform.SetParent(GridCellPos,false);
SomeMethod(tempCell);
}
}
}
myControl.SuspendLayout();
... меняем контент в myControl ...
myControl.ResumeLayout(false);
myControl.PerformLayout();
public partial class MainWindow : Form
{
/// <summary>
/// Fix for slow UI rendering
/// </summary>
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
}
мне нужно общее решение
Введите выражение у = [*ожидание ввода выражения]
Введите x = [*ввод x]
Значение Выражения в точке X = [значение выражение в точке]
const int WinDefaultDPI = 96;
/// <summary>
/// Исправление блюра при включенном масштабировании в ОС windows 8 и выше
/// </summary>
public static void DpiFix()
{
if (Environment.OSVersion.Version.Major >= 6)
{
SetProcessDPIAware();
}
}
/// <summary>
/// WinAPI SetProcessDPIAware
/// </summary>
/// <returns></returns>
[DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
/// <summary>
/// Исправление размера шрифтов
/// </summary>
/// <param name="c"></param>
public static float DpiFixFonts(Control c)
{
Graphics g = c.CreateGraphics();
float dx = g.DpiX
, dy = g.DpiY
, fontsScale = Math.Max(dx, dy) / WinDefaultDPI
;
g.Dispose();
return fontsScale;
}
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
AutoScaleDimensions
— в конструкторе выставляется автоматически в зависимости от разрешения и DPI вашего монитора. Поэтому я не использую конструкторы. Иначе, при запуске приложения на разных машинах с разным DPI можно получить очень неожиданные результаты.<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
</startup>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</System.Windows.Forms.ApplicationConfigurationSection>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
</startup>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
<add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
</System.Windows.Forms.ApplicationConfigurationSection>
<configuration>
<!-- Указывает, что приложение поддерживает определение DPI и не будет автоматически масштабироваться Windows при более высоких
значениях DPI. Приложения Windows Presentation Foundation (WPF) по умолчанию поддерживают определение DPI, им не нужно
специально включать параметр для этого. Для приложений Windows Forms на платформе .NET Framework 4.6, для которых задан этот параметр, необходимо
также задать для "EnableWindowsFormsHighDpiAutoResizing" значение "true" в файле app.config.-->
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>