using System; using System.Collections.Generic; using System.Reflection; using StardewModdingAPI.Utilities; namespace SMAPI.Tests.ModApiConsumer.Interfaces { /// A mod-provided API which provides basic events, properties, and methods. public interface ISimpleApi { /********* ** Test interface *********/ /**** ** Events ****/ /// A simple event field. event EventHandler OnEventRaised; /// A simple event property with custom add/remove logic. event EventHandler OnEventRaisedProperty; /**** ** Properties ****/ /// A simple numeric property. int NumberProperty { get; set; } /// A simple object property. object ObjectProperty { get; set; } /// A simple list property. List ListProperty { get; set; } /// A simple list property with an interface. IList ListPropertyWithInterface { get; set; } /// A property with nested generics. IDictionary> GenericsProperty { get; set; } /// A property using an enum available to both mods. BindingFlags EnumProperty { get; set; } /// A read-only property. int GetterProperty { get; } /**** ** Methods ****/ /// A simple method with no return value. void GetNothing(); /// A simple method which returns a number. int GetInt(int value); /// A simple method which returns an object. object GetObject(object value); /// A simple method which returns a list. List GetList(string value); /// A simple method which returns a list with an interface. IList GetListWithInterface(string value); /// A simple method which returns nested generics. IDictionary> GetGenerics(string key, string value); /// A simple method which returns a lambda. Func GetLambda(Func value); /// A simple method which returns out parameters. bool TryGetOutParameter(int inputNumber, out int outNumber, out string outString, out PerScreen outReference, out IDictionary> outComplexType); /**** ** Inherited members ****/ /// A property inherited from a base class. public string InheritedProperty { get; set; } } }