我有以下Graphql类型的类,包括POCO类:Order.cs
。
在这里,我想设置每个字段的默认值。例如对于Name
,如果没有返回值,我想返回“ No Name”。对于Created
,我想默认返回今天的日期。
public class OrderType : ObjectGraphType<Order>
{
public OrderType(ICustomerService customers)
{
Field(o => o.Id);
Field(o => o.Name);
Field(o => o.Description);
Field(o => o.Created);
}
}
public class Order
{
public Order(string name, string description, DateTime created, string Id)
{
Name = name;
Description = description;
Created = created;
this.Id = Id;
}
public string Name { get; set; }
public string Description { get; set; }
public DateTime Created { get; private set; }
public string Id { get; private set; }
}
有人可以帮助我解决此问题吗?
答案 0 :(得分:6)
如果您使用的是C#6+,则添加了the ability to assign a default value to auto-properties。因此,您可以简单地编写如下内容:
const uint WM_KEYDOWN = 0x100;
const uint KEY_ENTER = 13;
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
public static extern IntPtr FindWindowByCaption(IntPtr zeroOnly, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
static extern short VkKeyScanA(char ch);
public void SendInput(string input)
{
IntPtr windowHandle = FindWindowByCaption(IntPtr.Zero, myProcess.MainWindowTitle);
foreach(char c in input)
{
PostMessage(windowHandle, WM_KEYDOWN, ((IntPtr)VkKeyScanA(c)), IntPtr.Zero);
}
PostMessage(windowHandle, WM_KEYDOWN, ((IntPtr)KEY_ENTER), IntPtr.Zero);
}
这将根据需要将public string Name { get; set; } = "No Name";
public DateTime Created { get; private set; } = DateTime.Today;
属性的默认值设置为Name
,并将No Name
属性的默认值设置为今天的日期。