小编Pet*_*art的帖子

gRPC ASP.NET 核心。在 .proto 文件中传递自定义类型对象

我正在尝试为我的项目创建 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 的规范,但不明白如何做到这一点 - 我不知道如何传递objectException.

其他问题。让我们学习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)

c# protobuf-net grpc asp.net-core

5
推荐指数
0
解决办法
2834
查看次数

如何处理类库中的COM QueryInterface失败

我在实用程序库中有一个问题,它有一些COM互操作.它保留对调用之间使用的COM对象的引用.

如果使用相同的COM线程模型从线程调用所有方法,则该类可以正常工作.

但是,如果创建COM对象的调用使用与后续调用不同的线程模型,则QueryInterface将失败E_NOINTERFACE.

当我们async在单元测试中添加分支时,我们才发现这一点; 在此之前它在所有MTA应用程序中运行良好所有STA单元测试...

我想我理解失败的原因(通过COM文档,Chris Brumme的博客) - 正在使用的COM对象支持"两个"线程模型,这导致C#在STA和MTA创建的实例之间创建一个范围.

但是从图书馆的角度来看,我能想到的唯一修复方法有点垃圾:

  • 将此库仅用于MTA线程是一个不成文的规则
  • 更改库以检测来自STA线程的调用并失败(使用例如CurrentThread.ApartmentState)
  • 更改库以为所有COM互操作创建自己的MTA线程(或者仅在传入调用在STA线程上时)

有没有更干净/更容易的选择?这是一个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)

c# com-interop

3
推荐指数
1
解决办法
238
查看次数

WPF GridViewColumn对齐不起作用

我希望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)

c# wpf

2
推荐指数
2
解决办法
2799
查看次数

标签 统计

c# ×3

asp.net-core ×1

com-interop ×1

grpc ×1

protobuf-net ×1

wpf ×1