我正在尝试为我的项目创建 gRPC 服务。我有一堂课:
public class ServiceObject
{
public bool IsValuable { get; set; }
public bool IsValid { get; set; }
public object Result { get; set; }
public string ResultCode { get; set; }
public Exception Exception { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想从服务接收的对象。
我已经从谷歌阅读了 gRPC/Protobuf 的规范,但不明白如何做到这一点 - 我不知道如何传递object像Exception.
其他问题。让我们学习LocationGoogleApi C# 库中的类。
public class Location
{
public Location();
public Location(string address);
public Location(double latitude, double longitude);
[JsonProperty("lat")]
public double Latitude { get; set; } …Run Code Online (Sandbox Code Playgroud) 我在实用程序库中有一个问题,它有一些COM互操作.它保留对调用之间使用的COM对象的引用.
如果使用相同的COM线程模型从线程调用所有方法,则该类可以正常工作.
但是,如果创建COM对象的调用使用与后续调用不同的线程模型,则QueryInterface将失败E_NOINTERFACE.
当我们async在单元测试中添加分支时,我们才发现这一点; 在此之前它在所有MTA应用程序中运行良好所有STA单元测试...
我想我理解失败的原因(通过COM文档,Chris Brumme的博客) - 正在使用的COM对象支持"两个"线程模型,这导致C#在STA和MTA创建的实例之间创建一个范围.
但是从图书馆的角度来看,我能想到的唯一修复方法有点垃圾:
CurrentThread.ApartmentState)有没有更干净/更容易的选择?这是一个MCVE:
class Program
{
[ComImport, Guid("62BE5D10-60EB-11d0-BD3B-00A0C911CE86")] class SystemDeviceEnum { };
[ComVisible(true), ComImport, Guid("29840822-5B84-11D0-BD3B-00A0C911CE86"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface ICreateDevEnum { [PreserveSig] int CreateClassEnumerator([In] ref Guid pType, [Out] out IEnumMoniker ppEnumMoniker, [In] int dwFlags); }
static ICreateDevEnum createDeviceEnum;
static Guid VideoInputDeviceCategory = new Guid("860BB310-5D01-11d0-BD3B-00A0C911CE86");
static void Prepare()
{
var coSystemDeviceEnum = new SystemDeviceEnum();
createDeviceEnum = (ICreateDevEnum)coSystemDeviceEnum;
}
static int GetDeviceCount()
{ …Run Code Online (Sandbox Code Playgroud) 我希望GridViewColumn"from"中的信息与右边对齐.
这就是我所做的,它不起作用:
<ListView ItemsSource="{Binding VolumeNumber}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" >
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header="SomeStatus" DisplayMemberBinding="{Binding Name}" Width="170" />
<GridViewColumn Header="from" DisplayMemberBinding="{Binding Value, StringFormat=0.000000}" Width="170 >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Right" Width="40"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)