只是為了給您一些背景關系,我正在撰寫一些測驗類來測驗我的存盤庫使用 .NET 6.0 的 CRUD 操作。
我正在使用兩個介面:
1-IEntity是我所有物件的空基本介面。
public interface IEntity { }
2-IIdentifiableEntity<T>實作IEntity并讓我知道該物件具有Id屬性。
public interface IIdentifiableEntity<T> : IEntity
{
T Id { get; set; }
}
我創建了兩個測驗類,每種型別的介面一個:
1-TestIEntity測驗實作IEntity介面的物件。
[TestClass]
public class TestIEntity<T>
where T : IEntity
{
[TestMethod]
public void Test() {
// Test objects of type IEntity
// Assert.IsNotNull(repository.GetAll());
}
}
2-TestIIdentifiableEntity測驗實作IIdentifiableEntity. (在我的情況下,我只對測驗具有Idtype的物件感興趣long)
[TestClass]
public class TestIIdentifiableEntity<T>
where T : IIdentifiableEntity<long>
{
[TestMethod]
public void Test() {
// Test instances of type IIdentifiableEntity<long>
// Assert.IsTrue(repository.GetId(1).Id > 0);
}
}
我創建了兩個基本抽象測驗類,它們創建相應的測驗類并呼叫測驗方法。它看起來像這樣:
[TestClass]
public abstract class TestBase<T>
where T : IEntity
{
[TestMethod]
public void TestIEntity()
{
TestIEntity() testClass = new TestIEntity();
testClass.Test();
}
}
[TestClass]
public abstract class TestBaseId<T>
where T : IIdentifiableEntity<long>
{
[TestMethod]
public void TestIIdentifiableEntity()
{
TestIIdentifiableEntity() testClass = new TestIIdentifiableEntity();
testClass.Test();
}
}
這兩個測驗類已經啟動并運行,但是,我想找到一種方法將它們混合在一起,以便在檢查泛型型別后,我可以從同一個測驗類呼叫測驗方法。我的想法是得到類似的東西:
[TestClass]
public abstract class TestBase<T>
where T : IEntity
{
[TestMethod]
public void TestClass()
{
if (typeof(T) is IIdentifiableEntity<long>)
{
TestIIdentifiableEntity() testClass = new TestIIdentifiableEntity();
testClass.Test();
}
else
{
TestIEntity() testClass = new TestIEntity();
testClass.Test();
}
}
}
我嘗試了上述解決方案,但程式不執行if陳述句中的內容。
我的問題是:我正在嘗試做的事情可能嗎?如果是這樣,我如何檢查泛型型別是否實作IIdentifiableEntity<long>?
我嘗試瀏覽一些問題,但沒有一個適用于我的案例。
提前感謝您,任何建議表示贊賞。
uj5u.com熱心網友回復:
您可以使用Type.IsAssignableTo(Type)
typeof( T ).IsAssignableTo( typeof( IIdentifiableEntity<long> ) )
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527374.html
標籤:C#。网仿制药
