相关疑难解决方法(0)

C#匿名类可以实现一个接口吗?

是否可以使用匿名类型实现接口.我有一段我想要工作的代码,但不知道该怎么做.

我有几个答案要么说不,要么创建一个实现接口的类构造新的实例.这不是很理想,但我想知道是否有一种机制可以在界面上创建一个瘦动态类,这将使这个变得简单.

public interface DummyInterface
{
    string A { get; }
    string B { get; }
}

public class DummySource
{
    public string A { get; set; }
    public string C { get; set; }
    public string D { get; set; }
}

public class Test
{
    public void WillThisWork()
    {
        var source = new DummySource[0];
        var values = from value in source
                     select new
                     {
                         A = value.A,
                         B = value.C + "_" + value.D
                     };

        DoSomethingWithDummyInterface(values);

    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# anonymous-types

443
推荐指数
7
解决办法
15万
查看次数

在c#中创建接口实例

我在C#中使用接口而不是编写一个实现该接口的全新类,是否可以创建一个实现该接口的对象?界面定义为

public interface ITokenStore
{

    IToken CreateRequestToken(IOAuthContext context);


    IToken CreateAccessToken(IOAuthContext context);
}
Run Code Online (Sandbox Code Playgroud)

我知道在java中我可以这样

ITokenStore tokenStore = new ITokenStore()
    {
        IToken CreateRequestToken(IOAuthContext context) {
            IToken requestToken = null;

            return requestToken;
        }

        IToken CreateAccessToken(IOAuthToken context) {
            IToken accessToken = null;

            return accessToken;
        }
    };
Run Code Online (Sandbox Code Playgroud)

是否有一种等效的方法来实例化c#中的接口实例?

c# interface

8
推荐指数
1
解决办法
2万
查看次数

c#匿名接口实现

我已经多次看到这个问题,但我仍然不明白。在 Java 中,我可以这样做:

new Thread(new Runnable(){
  @Override
  public void run() {
    System.out.println("Hello");
  }
}).start();
Run Code Online (Sandbox Code Playgroud)

在我看来,这是实现只使用一次的接口的一种非常好的方式。有没有办法在 C# 中做到这一点?我已经听说过委托,但这只能部分解决问题,因为我只能实现一种方法。如果我有多种方法,在 C# 中执行此操作的“正确”方法是什么?我是否必须为此实现另一个类?

提前致谢!-克里斯

编辑:我不想专门创建一个新线程。这是关于在 C# 中从 Java 执行匿名实现之类的正确方法的更普遍的问题。这不是关于那个具体的例子。

c# java anonymous interface

7
推荐指数
1
解决办法
6874
查看次数

标签 统计

c# ×3

interface ×2

anonymous ×1

anonymous-types ×1

java ×1