署名付きのメソッドがあります
string GenericMethod<T>();
通常、これは次のように単純に呼び出します。
var result = GenericMethod<AType>();
AType
ただし、親メソッドに として渡されるため、私の場合はうまくいきませんType
。
以下のコードは、私が到達した場所を示しています。現在、 //ERROR HERE としてエラーが発生しています。
コードの前に、簡単な説明:と の両方をTestClass
実装します。ここでのポイントは、 が渡された場合、 ではなくを使用してメソッドを呼び出したいため、これは重要です。
型の名前を一般的な角かっこで単純に返すメソッドがあります。ITestClass
INotTestClass
TestClass
ITestClass
INotTestClass
TestClass
わかりました、これが単体テストの形式のコードです。
using System;
using NUnit.Framework;
namespace Ian.Tests
{
[TestFixture]
public class MiscTests
{
[Test]
public void WhoWeCallingTest()
{
var i = new TestClass();
i.TestGetTheType();
}
}
public class TestClass : ITestClass, INotTestClass
{
public void TestGetTheType()
{
var t1 = typeof(ITestClass);
var t2 = typeof(INotTestClass);
var t = GetType();
// so I can make a delegate normally, but no use as I don't have this info usually.
var dummyFunc = new MyDelegate<ITestClass>(GetTheType<ITestClass>);
var methodInfo = t.GetMethod("GetTheType");
var baseType = typeof(MyDelegate<>);
var delType = baseType.MakeGenericType(t1);
//ERROR HERE.
var del = Delegate.CreateDelegate(delType, this, methodInfo);
del.Method.Invoke(this, null);
}
public delegate string MyDelegate<T>();
public string GetTheType<T>()
{
return typeof(T).Name;
}
}
public interface ITestClass { }
public interface INotTestClass { }
}