我看了这个答案,我的情况是我不需要保持向后兼容性,我必须有一个解决方案,无需用protobuf-net所需的属性装饰数十个类.所以我尝试使用RuntimeTypeModel.Default.InferTagFromNameDefault = true;但我可能没有正确使用它,因为Serializer.Serialize调用仍然会引发异常请求合同.这是我的快速测试,我做错了什么?
public enum CompanyTypes
{
None, Small, Big, Enterprise, Startup
}
public class BaseUser
{
public string SSN { get; set; }
}
public class User : BaseUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public DateTime BirthDate { get; set; }
public List<string> Friends { get; set; }
public Company Company { get; set; }
}
public class …Run Code Online (Sandbox Code Playgroud) 我在读研究生时用LaTeX写了几本白皮书.从那以后,我对LaTeX允许用户做什么有一个非常好的印象,特别是它提供的优于格式化的控制等.
现在我在讨论是否应该将LaTeX用于我们的生产应用程序来生成PDF.我已经尝试了几个商业和免费的PDF库(PDFSharp/MigraDoc,iTextSharp,专家PDF等),但没有一个提供我需要的精确控制量,而不会使代码库长期难以维护.
如果我决定走这条路,它将从C#完成.由于LaTeX已经有了命令行界面,我应该可以很容易地从C#中做到这一点,作为从我的程序分叉的外部进程.
但我正在寻找社区的一些评论.
欢迎所有反馈.
目标:我正在设计一个REST API,允许用户在查询字符串上传递HTTP GET请求的参数.就像是
http://fake.api.com/search?api-key=1235&term=car&rows=10
Run Code Online (Sandbox Code Playgroud)
实现:在服务器端,我有一个模型绑定器,它接受这3个参数 - api-key,term和rows,并将它们转换为C#对象,这样我的控制器操作方法就不必解析查询字符串了.所以控制器动作方法签名看起来像
public IHttpActionResult Get(RequestObject request)
Run Code Online (Sandbox Code Playgroud)
问题:我在Swagger中遇到的是它生成文档和测试工具时,它将输入参数列为request.api-key,request.term和request.rows.这是因为从服务器获取的JSON是将对象名称添加到这些值的前缀.因此,当您尝试使用Swagger UI执行HTTP GET请求时,它会构建类似的URL
http://fake.api.com/search?request.api-key=1235&request.term=car&request.rows=10
Run Code Online (Sandbox Code Playgroud)
这是对服务器的错误请求.现在我可以轻松地使我的模型绑定器变得更聪明,只是忽略"请求".部分,但这似乎是一个解决这个问题的落后方式.
问题:如何在服务器端自定义由Swashbuckle - > Swagger生成的JSON,以便此特定对象的参数名称不以对象名称为前缀?我确实调查了Swashbuckle可扩展性API公开的ISchemaFilter和IDocumentFilter,但我没有看到一个干净的方法来做到这一点.可能是有可能的,但在这种情况下,一个例子会有所帮助.
我有一个C#(WinForm)程序,支持使用WIA进行扫描.我正在尝试在扫描一个或多个文档之前设置设备属性.主要是我想设置扫描仪的纸张尺寸.以下是代码片段:
foreach (Property property in selectedDevice.Properties)
{
//WiaProperties.WiaDpsHorizontalBedSize is my constant
if (property.PropertyID == WiaProperties.WiaDpsHorizontalBedSize)
{
//Set property value here...
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了水平床尺寸属性,但问题是如何将其设置为值?有一个属性的set_Value属性,但似乎需要引用一个结果对象.所以我不知道如何在设备上设置属性?
我正在尝试找到一种方法来将移动设备确定为手机或平板电脑.我正在使用51Degree.mobi(http://51degrees.codeplex.com/)的C#库.我看到浏览器对象上已经有一个IsMobileDevice属性,所以我知道它是否是一个移动设备,但现在我正在寻找另一个属性IsTablet(或其他一些方法来弄清楚).我想我可以根据屏幕尺寸做出决定,但这似乎并不牢固.
我试图找到一种方法来预先处理我的WinForm应用程序加载之前的一些事情.我尝试将static void Main()放在类库项目中的表单中,并从Program.cs中注释掉它.这产生了编译时错误:"...不包含适用于入口点的静态'Main'方法".这是有道理的,因为没有加载程序,DLL也没有加载.
所以问题是,有没有办法做到这一点?我希望DLL中的表单能够确定启动应用程序的表单:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if(condition1)
{
Application.Run(new Form1());
}
else if(condition2)
{
Application.Run(new Form2());
}
}
Run Code Online (Sandbox Code Playgroud)
此逻辑将在多个应用程序中使用,因此将其放在通用组件中是有意义的.
我有以下4个表(针对此问题进行了简化):
CompanyId | 名称
EmpoyeeId | CompanyId | FirstName | 姓
PermissionId | CompanyId | 允许
EmployeePermissionId | PermissionId | 员工ID
而POCO如下:
[Table("Employee")]
public class Employee
{
public int EmployeeId { get; set; }
public int CompanyId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Company Company { get; set; }
public List<Permission> Permissions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将公司和权限加载为Employee的属性.我可以使用以下代码加载公司:
var employee = _context.Employees
.Where(u …Run Code Online (Sandbox Code Playgroud) c# ×8
.net ×2
annotations ×1
bitmap ×1
detection ×1
dll ×1
entry-point ×1
json ×1
latex ×1
linux ×1
macos ×1
many-to-many ×1
mono ×1
pdfsharp ×1
poco ×1
ppm ×1
protobuf-net ×1
swagger ×1
swashbuckle ×1
tablet ×1
wia ×1