dapr / dapr/dotnet-sdk

Cryptic TypeLoadException if actor proxy interface is non-public

Open
#859 1 comment 0 reactions 0 assignees View on GitHub
kind/bug
Dominant language
C#
Stars
1.2k
Forks
378
Avg merge
1d 22h
Merged PRs (30d)
5

Description

Consider the following code snippet:

```csharp
ActorId actorId = new("123");
IMyActor proxy = ActorProxy.Create(actorId, nameof(MyActor));

// The Init method invokes the actor directly, which then decides whether to apply de-dupe logic.
await proxy.MyMethod();
```

Also, assume `IMyActor` is an internal interface (non-public).

## Expected Behavior

Internal interfaces should be supported, OR there should be a friendly exception explaining why my interface is invalid.

## Actual Behavior

If `IMyActor` is internal, I get the following cryptic exception:

> System.TypeLoadException: Type 'MyNamespace.IMyActor_.actorV1.proxyIMyActoractorV1Proxy' from assembly 'MyNamespace.IMyActor_.actorV1.proxy, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is attempting to implement an inaccessible interface.

It's not at all clear what needs to be done to fix this issue.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.