私のインターフェースでこのようなことができたらいいのにと思います
public T GetAStuff() where T is serializable
その結果、実装者がシリアライズ可能な出力を返すことを保証したい
これは達成できますか?ありがとう。
私のインターフェースでこのようなことができたらいいのにと思います
public T GetAStuff() where T is serializable
その結果、実装者がシリアライズ可能な出力を返すことを保証したい
これは達成できますか?ありがとう。
いいえ、そこには「シリアル化可能」の一般的な定義がないためです。これはシリアライザーに大きく依存し、要件の多くは属性ベースであり、一般的な制約として表現できません。
BinaryFormatter
必要なだけ[Serializable]
、またはおそらくISerializable
XmlSerializer
public
およびパブリックのパラメーターなしのコンストラクターが必要です (これT : new()
は役に立ちます)。オプションでIXmlSerializable
(ただし、恐ろしいため、非常にまれです)DataContractSerializer
XmlSerializer
setup または を使用できますが[DataContract]
、パラメーターなしのパブリック コンストラクターは必要ありません最善の策はT
、実行時に必要な特定の詳細を確認するか、より簡単にすることです。ユニット/統合テストが必要なすべてのシナリオをカバーしていることを確認してください。
public interface IFoo
{
T GetAStuff<T>() where T : ISerializable; // or what ever you need to constrain T to
}
-また-
public interface IFoo<T> where T : ISerializable
{
T GetAStuff();
}
さまざまなシリアル化オプションがあるため、タイプを制限できない場合があります。シリアル化オプションを 1 つだけ処理する必要がある場合は、可能かもしれません。