相关疑难解决方法(0)

C#中的泛型,使用变量类型作为参数

我有一个通用的方法

bool DoesEntityExist<T>(Guid guid, ITransaction transaction) where T : IGloballyIdentifiable;
Run Code Online (Sandbox Code Playgroud)

如何以下列方式使用该方法:

Type t = entity.GetType();
DoesEntityExist<t>(entityGuid, transaction);
Run Code Online (Sandbox Code Playgroud)

我一直收到愚蠢的编译错误:

找不到类型或命名空间名称't'(您是否缺少using指令或程序集引用?)

DoesEntityExist<MyType>(entityGuid, transaction);
Run Code Online (Sandbox Code Playgroud)

完美的工作,但我不想使用if指令每次调用具有单独类型名称的方法.

.net c# generics types

120
推荐指数
4
解决办法
14万
查看次数

NUnit TestCase with Generics

有没有办法将使用TestCase的泛型类型传递给NUnit中的测试?

这是我想做的但语法不正确...

[Test]
[TestCase<IMyInterface, MyConcreteClass>]
public void MyMethod_GenericCall_MakesGenericCall<TInterface, TConcreteClass>()
{
    // Arrange

    // Act
    var response = MyClassUnderTest.MyMethod<TInterface>();

    // Assert
    Assert.IsInstanceOf<TConcreteClass>(response);
}
Run Code Online (Sandbox Code Playgroud)

或者如果没有,实现相同功能的最佳方法是什么(显然我在实际代码中会有多个TestCases)?

用另一个例子更新......

这是传递单个泛型类型的另一个示例...

[Test]
[TestCase<MyClass>("Some response")]
public void MyMethod_GenericCall_MakesGenericCall<T>(string expectedResponse)
{
    // Arrange

    // Act
    var response = MyClassUnderTest.MyMethod<T>();

    // Assert
    Assert.AreEqual(expectedResponse, response);
}
Run Code Online (Sandbox Code Playgroud)

c# generics nunit unit-testing testcase

44
推荐指数
6
解决办法
2万
查看次数

标签 统计

c# ×2

generics ×2

.net ×1

nunit ×1

testcase ×1

types ×1

unit-testing ×1